3. TCP/IP
1. TCP/IP
네트워크 아키텍처 중 하나. 지금은 거의 TCP/IP만 사용된다.
TCP와 IP를 중심으로 하는 프로토콜의 집합
호스트: TCP/IP로 통신하는 PC와 스마트폰, 각종 네트워크 기기 전반
2. TCP/IP의 계층구조
1)요약
- 네트워크 인터페이스층: 프로토콜 자유 선택 가능. 이더넷, 무선 LAN(와이파이), PPP 등
- 인터넷층: 엔드투엔드 통신. IP, ICMP, ARP 등
- 트랜스포트층: 애플리케이션에 데이터 할당. TCP/UDP
- 애플리케이션층: 애플리케이션에서 다룰 데이터 형식과 절차 결정. HTTP, SMTP, POP3, IMAP4, DHCP, DNS 등
2) 네트워크 인터페이스층
같은 네트워크* 안에서 데이터를 전송한다.
*하나의 네트워크: 라우터와 레이어3 스위치로 구별되는 범위, 또는 레이어2 스위치로 구성하는 범위
프로토콜: 유선(이더넷), 무선 LAN(와이파이), PPP 등
3)인터넷층
다른 네트워크끼리 데이터를 전송한다.
라우터: 네트워크끼리 연결하고 데이터를 전송하는 기기
라우팅: 라우터에 의한 네트워크간 전송
엔드투엔드 통신: 원격지 네트워크에서 최종적인 출발지와 목적지 사이의 데이터 전송을 가리키는 말
프로토콜: IP, ICMP, ARP
- IP: 엔드투엔드 통신에 사용
- ICMP, ARP: IP를 보조
4)트랜스포트층
네트워크를 통해 수신된 데이터를 적절한 애플리케이션에 분배함
프로토콜: TCP, UDP
- TCP: 데이터가 유실되었을 경우 그 사실을 검출해 데이터를 다시 보내줌(엔드투엔드의 신뢰성 확보), 데이터 분할과 조립
- UDP: 비연결, 낮은 신뢰성, 빠른 속도
5)애플리케이션층
애플리케이션의 기능을 실행하기 위한 데이터의 형식과 처리 절차 등 결정
문자와 이미지 등 인간이 인식할 수 있도록 데이터 표현
프로토콜: HTTP, SMTP, POP3, DHCP, DNS 등
- HTTP: 웹브라우저에서 이용
- SMTP, POP3: 전자메일 소프트웨어에서 이용
- DHCP, DNS: 애플리케이션의 통신을 준비하기 위한 프로토콜
3. 데이터 송수신 규칙
1)헤더
헤더: 프로토콜의 기능을 실현하기 위한 제어 정보
캡슐화: 프로토콜이 데이터를 전송할 때 헤더를 추가하는 것
역캡슐화(=비캡슐화): 프로토콜이 데이터를 받고 헤더를 바탕으로 적절하게 처리해 헤더를 벗겨내고 다른 프로토콜로 넘기는 것
2)데이터 송수신 과정
- 웹브라우저의 데이터가 HTTP 헤더로 캡슐화, 트랜스포트 계층의 TCP 프로토콜로 넘어감
- TCP 헤더가 추가되고 인터넷 계층의 IP 헤더 추가
- 네트워크 인터페이스 계층의 이더넷 헤더와 FCS* 추가, 네트워크로 내보낼 데이터 완성
*FCS(Frame Check Sequence): 에러 체크를 위한 정보
TCP/IP의 상위 계층 프로토콜에서부터 하위 계층 프로토콜의 헤더가 점차 캡슐화되면서 네트워크로 보내는 데이터에는 여러 프로토콜의 헤더가 추가된다. 이후 이더넷 규격에 대응하는 물리적인 신호로 변환해 전송 매체로 내보내진다.
3)데이터 송수신 규칙
(1) 0과 1의 데이터로 되돌려서 전송
데이터가 물리적인 신호(전기)로 들어오면 네트워크 기기가 0과 1의 데이터로 되돌려서 전송한다.
(2) 헤더로 목적지를 확인하고 수신
- 웹서버 애플리케이션이 동작하는 웹서버에 물리적인 신호 도착 -> 0과 1의 데이터로 변환
- 이더넷 헤더를 참조, 자기 앞으로 온 데이터인지 확인하고 FCS로 오류 확인, 이더넷 헤더와 FCS 제거 후 넘김
- IP: IP 헤더 참조, 자기 앞으로 온 데이터인지 확인, IP 헤더 제거, TCP로 넘김
- TCP를 참조해서 어느 애플리케이션의 데이터인지 확인. TCP 헤더 제거, 웹서버 애플리케이션으로 넘김
- HTTP 헤더와 그 뒤의 데이터 부분 처리
4)데이터 호칭
- 애플리케이션층: 메시지
- 트랜스포트층: 세그먼트(TCP)/데이터그램(UDP)
- 인터넷층: 패킷(IP 패킷)/데이터그램(IP 데이터그램)
- 네트워크 인터페이스층: 프레임
*웹브라우저 통신의 경우
웹브라우저의 데이터에 HTTP 추가: HTTP 메시지
HTTP 메시지에 TCP 헤더 추가: TCP 세그먼트
TCP 세그먼트에 IP 헤더 추가: IP 패킷(=IP 데이터그램)
IP 패킷에 이더넷 헤더와 FCS 추가: 이더넷 프레임