본문 바로가기

Network

[Network] TCP/IP 4계층이란? / TCP 연결

 

 

TCP/IP 4계층과 OSI 7계층의 차이점은 TCP/IP는 좀 더 실무적인 개념들로 간랸화 되어 있으며, OSI 7계층은 네트워크 통신에 필요한 모든 개념들이 계층별로 들어가 있는 느낌이다.

 

따라서 실제로는 TCP/IP 4계층을 모델로 네트워크 통신을 표현한다.

 

 

 

 

 

TCP/IP 4계층


 

TCP/IP 4계층은 다음과 같은 계층들로 이루어져 있다.

 

1. 네트워크 엑세스 계층

2. 인터넷 계층

3. 전송 계층

4. 응용 계층

 

네트워크를 통해 데이터를 송수신하게 되면 각 계층을 위에서 아래로 또는 아래에서 위로 지나야만 송수신이 가능하다. 각 계층을 지날때마다 계층별 헤더(계층별로 필요한 정보)가 데이터에 추가 되며, 이를 캡슐화라고 부른다. 또한, 수신된 데이터를 확인하기 위해 계층별 헤더를 확인하고 알맞은 행동을 취한 후 헤더를 제거한다. 이를 역캡슐화라고 부른다.

 

 

👆 위와 같은 순서로 헤더가 추가된다. 

 

 

4계층, 응용 계층 (Application Layer)


데이터 단위: Data

프로토콜: HTTP, HTTPS, FTP, Telnet, DNS 등이 있다.

 

사용자와 가장 가까운 계층으로 사용자와 소프트웨어 간의 소통을 담당하는 구간이다.

HTTP 메시지

 

👆 위와 같은 HTTP 메시지가 데이터에 포함되어 전송된다.

 

 

 

3계층,  전송 계층 (Transport Layer)


데이터 단위: 세그먼트

프로토콜: TCP, UDP

전송 주소: Port

 

- 3계층은 노드 간의 신뢰성을 보장하는 단계이다. 

- 역캡슐화 과정에서 포트번호를 확인해 데이터를 정확한 애플리케이션에 전달을 한다.

- TCP는 연결 지향형으로 패킷에 오류가 있으면 재전송을 위해 오류를 복구한다.

- UDP는 패킷이 손실 되어도 그대로 전송한다.

 

TCP 헤더
UDP 헤더

 

위 사진은 TCP 헤더와 UDP 헤더를 그림으로 나타낸 것이다. 연결 지향적이며 오류 검출, 에러 복구 등 UDP에 비해 다양한 기능이 있는 TCP 헤더가 UDP 헤더에 비해 복잡한 것을 볼 수 있다.

 

TCP 헤더의 표시 부분은 TCP 연결과 종료 시에 사용하는 flag들이며, 컨트롤 비트라고 부른다.

 

TCP 연결 작업을 3 Way Handshake 라고 부르며 종료 작업을 4 Way Handshake 라고 부른다.

 

 

 

 

2계층,  인터넷 계층 (Internet Layer)


데이터 단위: 패킷

데이터 주소: IP

프로토콜: IP, ICMP

 

네트워크 상에서 데이터 전송을 수행하는 계층이다. 빠르고 정확하게 데아터가 전송될 수 있도록 경로 설정(라우팅)을 하는 역할을 한다.

라우터가 내부의 라우팅 테이블에 경로 정보를 등록하여 데이터 전송을 위한 최적의 경로를 찾는다. 이러한 출발지와 목적지 간의 통신을 End-to-End 통신이라고 한다.

 

 

 

1계층, 네트워크 계층 (Network Layer)


데이터 단위: 프레임

전송 주소: Mac

프로토콜: Ethernet

 

물리적인 데이터 전송을 담당하는 계층이다. 2계층인 인터넷 계층과 달리 내부 네트워크 안에서 데이터 전송이 이루어진다. 노드 간의 신뢰성 있는 데이터 전송을 보장하며, Mac주소를 통해 데이터 전송을한다. 또한 에러 검출을 진행한다.

 

 

 

 

3 Way Handshake


3 Way Handshake는 다음과 같은 순서로 진행된다.

 

3 Way Handshaking

 

(A(클라이언트)와 B(서버)가 TCP 연결을 한다고 가정한다.)

 

[STEP 1]

 

A는 B에게 SYN 패킷을 보낸다. 이후 A는 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.

 

SYN 패킷

 

👆 Flag가 SYN 비트가 설정되었으며, Sequence Number는 722496539로 설정되었고 응답을 받지 않은 상태이므로 Acknoledgment Number는 설정되지 않았다.

 

[STEP 2]

 

B는 SYN 패킷을 받고 A의 요청을 수락한다는 SYN/ACK 패킷을 A에게 보낸다. 그 후 A가 다시 ACK 패킷을 보내기를 기다리며 SYN_RECEVED 상태가 된다.

 

 

👆 Flag가 SYN, ACK 비트로 설정 되었으며, B 측에서 Seqeunce Number를 3170200068로 설정 했으며 Acknowledment number를 722486539 + 1인 722486540으로 설정 하였다.

 

[STEP 3]

 

A는 B에게 ACK 패킷을 보내고 이후로는 연결이 이루어져 데이터가 오가게 된다. 이때 B의 상태는 ESTABLISHED이다

 

ACK 패킷

Flag가 ACK 비트로 설정되었으며, Acknowledgment number를 3170200068 + 1인 3170200069로 설정 되었다.

 

4 Way Handshake


4 Way Handshaking은 다음과 같은 순서로 진행된다.

 

4 Way Handshaking

 

 

[STEP 1]

 

A가 B에게 연결을 종료하겠다는 FIN 패킷을 보낸다.

 

[STEP 2]

 

B는 확인메시지인 ACK 패킷을 보낸 후 A의 요청에 대한 응답을 다 보낸다.

 

[STEP 3]

 

A에 대한 B의 응답이 끝났으면 연결이 종료되었음을 알리는 FIN 패킷을 A에게 보낸다.

 

[STEP 4]

 

A는 확인 메시지인 ACK 패킷을 보낸다.

 

B가 A에게 FIN 패킷을 보낼 때 한 가지 문제가 생길 수 있다. B가 A에게 보낸 FIN 패킷이 B가 A에게 보낸 응답 보다 빨리 도착할 수도 있다. 이 경우에는 A가 B의 일부 응답을 받지 못하는 상황이 생길 수 있다.

 

따라서 A가 B에게 FIN 패킷을 받고 ACK 패킷을 보낸 뒤에도 일정 시간동안 아직 도착하지 않은 잉여 패킷을 기다리게 된다.

 

이렇게 4 Way Handshaking 이후에도 소켓을 닫지 않고 잉여 패킷을 기다리는 상태를 TIME_WAIT 상태라고 한다.

 

 

 

TCP Flag 종류


SYN (Synchronize) 여녈 요청 플래그

 

- TCP에서 세션을 성립할 때 가장 먼저 보내는 패킷이다. 시퀀스 번호를 임의로 설정하여 세션을 연결한다.

 

ACK (Acknowledgement) 응답 플래그

 

- 상대방으로부터 패킷을 받았다는 것을 알려주는 패킷이다. 송신측에서 수신 측 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK을 보낸다.(일반적으로 +1을 하여 보낸다.) ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송하거나 다음 패킷을 전송한다.

 

FIN (Finish) 연결 종료 플래그

 

- 세션 연결을 종료시킬 때 사용되며, 더 이상 전송할 데이터가 없음을 나타낸다.

 

RST (Reset) 연결 재설정 플래그

 

- 재설정을 하는 과정이며 양방향에서 동시에 일어나는 중단 작업이다. 비정상적인 세션 연결 끊기에 해당하며, 이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 즉시 연결을 끊고자 할 때 사용된다.

 

PSH (Push) 넣기 플래그

 

- 버퍼가 채워지기를 기다리지 않고 데이터를 받는 즉시 전달하는 Flag이다. 데이터는 버퍼링 없이 응용계층으로 바로 전달한다.

 

URG (Urgent) 긴급 데이터 플래그

 

- 긴급한 데이터의 우선순위를 다른 데이터의 우선순위보다 높여 긴급하게 데이터를 전달하는 Flag이다.

 

 

 

출처


https://ohcodingdiary.tistory.com/12

https://velog.io/@dyunge_100/Network-TCPIP-4%EA%B3%84%EC%B8%B5%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

 

[Network] TCP/IP 4계층에 대하여

두 계층 모두 데이터 통신을 표현한 계층이긴 하지만 OSI 7계층은 데이터 통신에 필요한 계층과 역할을 정확하게 정의하려고 한 모델이다. 그에 반해 TCP/IP 4계층은 현재 인터넷에서 사용되는 프

velog.io

 

https://wooono.tistory.com/507