TCP/IP
TCP/IP란?
데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약이다.
TCP, IP 두가지의 프로토콜로 이루어져 있다.
- 프로토콜 : PC와 스마트폰 등이 통신하는 규칙
- 네트워크 아키텍처 : 복수의 프로토콜을 조합한 것 (네트워크 아키텍처는 우리가 사용하는 언어에 해당한다.)
현재는 TCP/IP만 거의 사용한다.
TCP/IP의 주요 특징
- 연결형 서비스 및 비연결형 서비스 제공
- 패킷 교환
- 동적 경로 할당
- 공통의 응용 프로그램 제공
TCP/IP의 계층구조
TCP/IP는 OSI 7계층 중 4계층으로 이루어져 있다.
(7계층은 실무에서 사용하는 경우가 없으므로, 자세히 다루지 않겠다.)
- 웹 액세스의 프로토콜 조합
데이터링크 계층(데이터를 전송하는 역할을 하는 계층)
대표적 프로토콜
- ARP (Address Resolution Protocol): [IP 주소 -> 물리 주소]
- RARP (Reverse ARP): [물리 주소 -> IP 주소]
네트워크 인터페이스층 : 같은 네트워크 안에서 데이터를 전송하는 층
하나의 네트워크는 [라우터]와 [레이어2 or 3 스위치]로 구획하는 범위이다.
- 인터넷층 : 네트워크 사이에서 데이터를 전송하는 역할을 한다.
- 라우팅 : 라우터에 의한 네트워크 간 전송을 뜻함
- 엔드투엔드 통신 : 원격지 네트워크에서 최종 출발지와 목적지 사이의 데이터 전송을 뜻함
인터넷 계층
- 네트워크 상에서 패킷을 처리 (패킷 라우팅 등)
- 대표적 프로토콜
- IP (Internet Protocol)
- ICMP (Internet Control Message Protocol)
- IGMP (Internet Group Management Protocol)
전송 계층 (트랜스포트층)
- 트랜스포트층은 TCP, UDP를 포함하는 계층이다.
- 대표적 프로토콜
- TCP : TCP는 데이터가 유실되더라도 그 사실을 검출해 데이터를 다시 보내준다. (엔드투엔드의 신뢰성을 확보해준다.)
- UDP
애플리케이션층
- 애플리케이션의 기능을 실행하기 위한 데이터의 형식과 처리 절차등 결정하는 계층
- 대표적 프로토콜
- TCP 이용 : FTP, SMTP, Telnet 등
- UDP 이용 : TFTP(Trivial FTP), DNS(Domain Name System), BOOTP(Bootstrap Protocol) 등
- IP 직접 이용 : traceroute 프로그램
- ICMP 직접 이용 : ping 프로그램
인터넷 주소 (Internet Address)
- 인터넷에 연결되어 있는 호스트를 식별
- 3가지 종류의 주소
- 물리주소 : 네트워크 내에서 호스트를 식별하는 물리적 하드웨어 주소로서 네트워크 인터페이스 주소
- 인터넷 주소 (IP 주소) : 서로 다른 네트워크 간에 호스트를 식별하는 논리주소
- 포트 주소 : 프로세스를 식별하는 포트 번호
포트 주소
- 포트 번호
- TCP 및 UDP에 의해 응용 프로그램을 식별
- 2byte(16bit)로 구성
데이터 송수신 규칙
헤더 : 각 프로토콜에는 각각의 기능을 실현하기 위한 제어 정보(헤더)가 필요함
- 캡슐화 : Protocol Data Unit = Service Data Unit + Protocol Control Information
- 역캡슐화
- 수신측 시스템의 해당 계층에서 수행되는 캡슐화의 반대 과정
- 물리 계층 이외의 모든 계층에서 수행됨
캡슐화 순서
데이터 수신, 전송할 때의 규칙
데이터 전송
웹서버 애플리케이션의 데이터 수신 (헤더로 목적지를 확인하고 수신)
이더넷 → IP → TCP → HTTP → 웹브라우저
- 이더넷(네트워크 인터페이스 계층) :
- 이더넷 헤더를 참조하여 자기 앞으로 온 데이터인지 확인
- FCS로 데이터에 오류가 없는지 확인
- 이더넷 헤더, FCS를 제거함
- IP(인터넷 계층) :
- IP헤더를 참조하여 자기 앞으로 온 데이터인지 확인
- IP 헤더를 제거함
- TCP(전송 계층) :
- TCP 헤더를 참조해 어느 애플리케이션의 데이터인지 확인
- TCP 헤더를 제거함
- HTTP(응용 계층) :
- HTTP 헤더를 읽고 웹 서비스를 제공할 수 있도록 데이터를 처리
- 애플리케이션으로 데이터 처리를 넘김
- HTTP 헤더와 그뒤의 데이터 부분을 처리함
데이터를 부르는 방법
- 애플리케이션층 → 메시지
- 트랜스포트층 → 세그먼트(TCP) or 데이터그램(UDP)
- 인터넷층 : IP 패킷 or IP 데이터그램
- 네트워크 인터페이스층 : 프레임
HTTP 메시지 = 웹브라우저의 데이터 + HTTP 헤더
TCP 세그먼트 = HTTP메시지 + TCP 헤더
IP 패킷(IP 데이터그램) = TCP 세그먼트 + IP 헤더
이더넷 프레임 = IP패킷 + 이더넷 + FCS
인터넷에서 사용하는 주소와 사설 네트워크에서 사용하는 주소
IP주소는 공인/사설 IP주소 2가지로 나뉜다.
공인주소 : 인터넷 통신을 위해 사용하는 IP 주소(=퍼블릭 주소, 글로벌 주소)
사설주소 : 사설네트워크에서 이용하는 IP주소
(10.0.0.0 ~ 10.255.255.255)
(172.16.0.0 ~ 172.31.255.255)
(192.168.0.0 ~ 192.168.255.255)
NAT (Network Address Translation)
목적지가 사설주소인 경우?
- 서버에서 사설IP를 폐기시킴
사설에서 인터넷으로 통신하는 방법
- 인터넷으로 요청을 전송할 때, 출발지 IP 주소를 변환함
- 라우터는 나중에 원래대로 되돌리기 위해, 변환한 주소의 대응을 NAT 테이블에 보존해둔다.
- 요청에 대해 응답이 라우터로 돌아오면, 목적지 IP주소를 변환한다. 이때, NAT 테이블에 보존해 둔 주소의 대응을 이용한다.
- 사설주소와 공인주소를 1:N 대응시키는 주소변환을 NAPT라고 한다.
데이터가 잘 도착했는지 확인하는 법
- IP는 데이터를 보내는 시도를 할 뿐, 데이터가 보내졌는지 알 수 없다.
- ICMP : IP에 의한 엔드투엔드 통신이 정상적으로 이루어졌는지 확인하는 기능을 갖춘 프로토콜
ICMP
- 주요 기능
- 에러 리포트
- IP패킷을 폐기했다면, 출발지로 에러리포트를 전송한다.
- 이 에러 리포트를 도달불능 메시지라고 부른다.
- 에러 리포트
- 진단 기능
- IP의 엔드투엔드 통신이 가능한지 진단한다.
- 진단을 위해서 이용하는 명령으로 ping 커맨드가 있습니다.
ARP란?
IP 주소와 인터페이스를 식별하기 위한 MAC주소(물리주소)를 대응시켜줌
IP주소와 MAC주소를 대응시키는 것 → 주소해석
ARP 동작 흐름
- ARP요청으로 IP주소에 대응하는 MAC주소를 질의한다.
- 질의받은 IP 주소를 가진 호스트가 ARP 응답으로 MAC 주소를 알려준다.
- 주소 해석한 IP주소와 MAC주소의 대응을 ARP 캐시에 보존한다.
포트 번호
- 애플리케이션을 식별하는 식별 번호이다.
- TCP 및 UDP에 의해 응용 프로그램을 식별한다.
- 포트번호는 16비트이고, 범위는 0~65535이다.
- 웰노운 포트 : 서버 애플리케이션용으로 예약된 포트번호
- 등록된 포트 : 서버 애플리케이션을 식별하기 위한 포트번호
- 동적/사설 포트 : 통신할 때 동적으로 할당되는 포트번호
포트 번호 범위
명칭 | 포트 번호 범위 | 의미 |
---|---|---|
웰노운 포트 | 0 ~ 1023 | 서버 애플리케이션용으로 예약된 포트 번호 |
등록된 포트 | 1024 ~ 49151 | 자주 이용되는 애플리케이션의 서버 쪽 포트 번호 |
동적/사설포트 | 49152 ~ 65535 | 클라이언트 애플리케이션용 포트 번호 |
주요 웰노운 포트 번호
프로토콜 | TCP | UDP |
---|---|---|
HTTP | 80 | - |
HTTPS | 443 | - |
SMTP | 25 | - |
POP3 | 110 | - |
IMAP4 | 143 | - |
FTP | 20/21 | - |
DHCP | - | 67/68 |
TCP란?
TCP란 신뢰성이 있는 애플리케이션 간의 데이터 전송을 하기 위한 프로토콜입니다.
TCP에 의한 데이터 전송 절차 (3웨이 핸드쉐이크)
- TCP 커넥션 맺기
- 애플리케이션 간 데이터 송수신
- TCP 커넥션 끊기
TCP 헤더 형식 (중요한 순서대로!)
- 포트 번호 (적절한 애플리케이션 프로토콜에 데이터를 배분할 수 있기 때문)
- 시퀀스 번호
- ACK 번호
데이터 분할 구조
- 데이터를 분할하는 기준 단위는 MSS(Maximum Segment Size)라고 부른다.
- MSS의 표준 크기는 1460byte이다.
IP란?
- OSI 모델의 네트워크 계층의 기능
- 사용자에게 복잡한 인터넷 개별 네트워크 구조를 숨겨 모든 호스트들을 연결하는 1개의 가상 네트워크로 보이도록 함.
- 네트워크 계층의 투명성을 제공함
비연결형 서비스
- 인터넷 계층의 투명성
- IP 역할 : 호스트의 주소 지정 및 데이터그램 전송
- 경유해야 하는 데이터 링크 및 라우터 정보를 무시
- 신뢰성이 없는 데이터 전송
IP 단편화
- IP 데이터그램의 분할
- MTU (Maximum Transfer Unit)
- 네트워크 링크에서 허용하는 프레임당 데이터의 최대 길이
- Ethernet LAN : MTU = 1500 byte
- CCITT X.25 : MTU = 128 byte
- 네트워크 링크에서 허용하는 프레임당 데이터의 최대 길이
- IP 데이터그램은 전송 중 각 네트워크의 MTU에 적합한 크기로 분할되었다가 목적지 호스트에서 각 fragment들을 재조립함
UDP란?
- 데이터를 적절한 애플리케이션에 배분하는 기능만 있는 프로토콜
- 확인은 전혀 하지 않음
UDP의 장점
- 확인을 하지 않으므로 TCP에 비해 전송효율이 좋다.
- 데이터를 일방적으로 보여주는 스트리밍 같은 방식에 특히 좋다.
네트워크의 전화번호부
- 이름해석
- 사용자가 IP주소를 이해하기 어렵기 때문에 호스트명을 붙여서 구분을 쉽게 한다. a. URL과 메일주소에 호스트명 자체나 호스트명을 구하기 위한 정보가 포함되어있다.
- DNS : URL등으로 어플리케이션의 주소를 지정하면, 호스트 이름에 대응하는 IP주소를 자동으로 구함 (가장 많이 쓰이는 이름해석)
DNS 서버
- DNS를 이용하려면 DNS 서버가 필요하다.
- DNS서버에 미리 호스트명과 IP 주소의 대응관계를 등록해둔다.
- DNS 리졸버 : DNS서버에 질의하는 기능
설정 자동화
- DHCP : 설정을 자동화 하는 프로토콜 1. DHCP DISCOVER 2. DHCP OFFER 3. DHCP REQUEST 4. DHCP ACK