TCP/IP 란?
IP는 인터넷상에서 데이터를 전달하는데 사용되는 프로토콜입니다. 하지만 IP는 기본적인 기능만 제공하기 때문에 TCP 또는 UDP같은 프로토콜을 함께 사용해야합니다. IP는 데이터를 조각내고, 주소를 지정하고, 목적지로 보내는 역할을 수행할 수 있지만 데이터가 유실되거나 순서가 뒤죽박죽으로 섞여서 신뢰성을 보장하기 어렵습니다.
TCP는 IP의 단점을 보완하기 때문에 같이 사용하게 되는데요. TCP는 데이터의 순서를 보장하고 체크섬을 활용해 오류까지 검증해줍니다.
3-way handshake
TCP는 연결지향성이기 때문에 클라이언트와 서버와의 연결이 확인된 후 데이터를 전송합니다. 이때 연결을 확인하는 방법이 바로 3way handshake입니다.
1. syn 패킷전송
클라이언트가 서버에게 syn 패킷을 보내어 통신할 준비가 되었냐고 묻습니다.
2. syn-ack 패킷전송
서버는 클라이언트에게 통신할 수 있다는 의미로 syn-ack 패킷을 전송합니다.
3. ack 패킷 전송
클라이언트는 확인했다는 의미로 서버에게 다시 ack 패킷을 전송하고, 서로의 존재를 확인합니다.
TCP/IP 4계층
3-way handshake로 서로의 존재를 확인했으면 데이터를 보낼 준비를 합니다.
데이터는 TCP/IP 4계층을 거치면서 데이터가 캡슐화 되는데요.
응용 계층(Application Layer)
응용계층에서는 HTTP, FTP, SMTP 등 다양한 프로토콜들을 사용합니다. 만약에 클라이언트가 HTTP 통신으로 네이버에 접속한다면 HTTP 요청 메시지가 캡슐화되어 생성됩니다.
전송 계층(Transport Layer)
웹 브라우저가 생성한 HTTP 요청 메시지를 전송계층으로 전달합니다. 그리고 TCP가 이 전송계층에 속하는데요. 이 HTTP 요청 메시지를 세그먼트로 분할합니다. (TCP는 데이터를 작은 단위로 쪼개어 보내요) 각 세그먼트는 고유한 시퀀스 번호를 받게되고, TCP 헤더가 추가되어 세그먼트가 완성됩니다. 이 시퀀스 번호 덕분에 역캡슐화 한 데이터의 순서가 보장되어 올바르게 재조립이 가능하고, 유실된 패킷까지 다시 요청할 수 있게 됩니다.
인터넷 계층(Internet Layer)
각 TCP 세그먼트는 IP 패킷으로 포장됩니다. 그리고 IP 헤더가 추가되어 IP 데이터그램이 됩니다. IP 헤더에는 출발지, 목적지 IP 주소, 패킷 길이, 프로토콜 정보등이 포함됩니다.
네트워크 액세스 계층 (Network Access Layer)
IP 데이터그램이 데이터 링크 계층으로 전달됩니다. 이때 데이터 링크 계층에서는 IP 데이터그램을 프레임으로 포장합니다.
프레임에는 물리적인 네트워크 주소(MAC 주소)와 오류 검출을 위한 체크섬이 포함됩니다. 이때 형식은 이더넷 프레임 구조로 포장됩니다.
네이버 접속 시 TCP/IP 통신 시나리오
클라이언트의 HTTP 요청이 TCP/IP 4계층을 타고 캡슐화 되어 이더넷 프레임으로 가공 되었습니다. 이더넷 프레임은 출발 MAC 주소, 도착 MAC 주소, IP주소 등 목적지까지 도달하는데 필요한 정보들이 다 갖추어져 있습니다. 이제 라우터와 스위치를 걸치면서 목적지에 도달하게 되고, 데이터가 역캡슐화 되어 서버가 요청에 대한 응답을 준비할 수 있게 됩니다.
참고자료
-https://medium.com/@kusal95/tcp-3-way-handshake-process-1fd9a056a2f4
-https://yozm.wishket.com/magazine/detail/1956/
-https://velog.io/@moonblue/%EC%9D%B4%EB%8D%94%EB%84%B7-%ED%94%84%EB%A0%88%EC%9E%84-Ethernet-Frame
'네트워크' 카테고리의 다른 글
[네트워크] OSI 7계층 완벽 정리! (0) | 2025.02.09 |
---|---|
HTTP 강의 정리 [ HTTP 헤더 정리 ] (0) | 2021.07.07 |