TCP/IP 계층은 4개의 계층을 가지고 있으며 OSI 7계층과 많이 비교한다.
TCP/IP 4계층 → OSI 7계층
이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다.
ex) 전송 계층에서 TCP → UDP 변경되었다고해도 인터넷 웹 브라우저를 다시 설치하지 않아도 됨
TCP/IP 4계층 대표 스택
애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이다. 주로 웹 서비스, 이메일 등 사람들에게 실질적으로 서비스를 제공하는 층이다.
www.naver.com
에 DNS 쿼리가 오면 [Root DNS]→[.com DNS]→[.naver DNS]→[.www DNS]
과정을 거쳐 완벽한 주소를 찾아 IP 주소를 매핑한다.전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공한다. 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있으며, 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때의 중계 역할을 한다. 대표적으로 TCP와 UDP가 있다.
가상회선 패킷 교환 방식
데이터그램 패킷 교환 방식
TCP는 신뢰성을 확보할 때 3-way handshake
라는 작업을 진행한다.
이 3-웨이 핸드쉐이크 과정은 TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말한다.
이를 통해 양쪽 모두 데이터를 전송할 준비가 되어있다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 다른 한쪽이 준비되었다는 것을 알 수 있도록 해준다.
포트(PORT) 상태 정보
CLOSED
: 포트가 닫힌 상태LISTEN
: 포트가 열린 상태로 연결 요청 대기 중SYN_RECEIVED
: SYNC 요청을 받고 상대방의 응답을 기다리는 중ESTABLISHED
: 포트 연결 상태TIME_WAIT
: Server로부터 FIN을 수신하더라도 일정시간(default: 240초)동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정Flag 정보
연결 성립 과정
SYN
→ ServerSYN + ACK
→ ClientACK
→ Server이렇게 양쪽 세션 모두 준비가 되면 신뢰성이 구축되고, 데이터 전송을 시작한다.
TCP는 이러한 과정이 있기 때문에 신뢰성이 있는 계층이라고 하며, UDP는 이 과정이 없기 때문에 신뢰성이 없는 계층이라고 한다.
TCP가 연결을 해제할 때는 4-way handshake
과정이 발생한다.
3-way handshake
가 연결 확립을 위해 진행했다면 4-way handshake
는 세션을 종료하기 위해 수행되는 절차를 말한다.
연결 해제 과정
Client → FIN
→ Server
Client가 연결을 종료하겠다는 FIN 플래그를 전송한다. 보낸 후에 FIN_WAIT_1 상태로 변하고 서버의 응답을 기다린다.
클라이언트가 서버에게 이제 '종료하자' 라는 메세지를 보낸다.
Client: ESTABLISHED(connection) → FIN_WAIT_1(active close)
Server → ACK
→ Client
FIN 플래그를 받은 Server는 확인메세지인 ACK를 Client에게 보내준다. 그 후 CLOSE_WAIT 상태로 변한다. Client도 마찬가지로 Server에서 종료될 준비가 됐다는 FIN을 받기위해 FIN_WAIT_2 상태가 된다.
'종료하자'라는 메세지를 받은 서버는 '오키'라는 메세지를 클라이언트에게 보내준다.
'오키'라는 메세지를 받은 클라이언트는 종료할 준비한다.
Server: ESTABLISHED(connection) → CLOSE_WAIT(passive close)
Client: FIN_WAIT_1 → FIN_WAIT_2
Server → FIN
→ Client
서버는 클라이언트에게 '나 진짜 종료할 준비됐음! 이제 종료하자 ㄱㄱ' 메세지를 보낸다.
Client → ACK
→ Server
클라이언트도 '오키 나도 종료할게' 라고 서버에게 메세지를 보낸다.
이 때 클라이언트는 일정 시간 뒤에 종료한다.
❓ 일정 시간 뒤에 닫는 이유
인터넷 계층은 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층으로 IP, ARP, ICMP 등이 있다.
전선, 광섬유, 무선 등 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 '규칙'을 정하는 계층이다. 네트워크 접근 계층이라고도 한다.
통신 방식
유선 LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르며 전이중화 통신을 사용한다.
무선 LAN 장치는 수신/송신에 같은 채널을 사용하기 때문에 반이중화 통신을 사용한다.
데이터 링크 계층. 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화한다.
# 이더넷 프레임 구조
Preamble | SFD | DMAC | SMAC | EtherType | Payload | CRC
만약 HTTP를 통해 웹 서버에 있는 데이터를 요청한다면 TCP/IP 4개의 계층에서는 다음과 같은 과정이 일어난다.
캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더에 삽입하는 과정을 말한다.
데이터
TCP(L4) 헤더
+ 데이터IP(L3) 헤더
+ TCP(L4) 헤더 + 데이터프레임 헤더
+ IP(L3) 헤더 + TCP(L4) 헤더 + 데이터 + 프레임 트레일러
애플리케이션 → 링크 계층으로 전달되며 프레임 헤더와 프레임 트레일러가 붙어 '프레임'화가 된다.
비캡슐화 과정은 하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정을 말한다.
프레임 헤더
+ IP(L3) 헤더 + TCP(L4) 헤더 + 데이터 + 프레임 트레일러
IP(L3) 헤더
+ TCP(L4) 헤더 + 데이터TCP(L4) 헤더
+ 데이터데이터
캡슐화된 데이터를 받게 되면 프레임화 된 데이터는 링크 계층에서부터 다시 패킷화를 거쳐 세그먼트, 데이터그램화를 거쳐 메시지화가 되는 비캡슐화 과정이 일어난다.
그 이후 최종적으로 사용자에게 애플리케이션의 PDU인 메시지로 전달된다.
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위를 PDU(Protocol Data Unit)라고 한다.
PDU는 제어 관련 정보들이 포함된 헤더
, 데이터를 의미하는 페이로드
로 구성되어 있으며 계층마다 부르는 명칭이 다르다.
출처