네트워크 계층 구조를 통해 이와 같은 한계를 어떻게 보완할 수 있는지 알아보자
네트워크 프로토콜 계층은 다음과 같이 OSI 7계층과 TCP/IP 4계층으로 나눌 수 있습니다.
IP 프로토콜 보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에 앞서 다룬 IP 프로토콜의 한계를 보완할 수 있습니다.
TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었으며 TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지는 않습니다.
채팅 프로그램에서 메시지를 보낼 때 어떤 일이 일어나는가?
1. 프로그램이 Hello, World! 메시지 생성
SOCKET 라이브러리를 통해 전달
프로그램이 네트워크에서 데이터를 송수신할 수 있도록, "네트워크 환경에 연결할 수 있게 만들어진 연결부"가 바로 네트워크 소켓(Socket)입니다.
TCP 정보 생성, 메시지 데이터 포함
TCP 세그먼트를 생성한다.
IP 패킷 생성, TCP 데이터 포함
이렇게 생성된 TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임워크에 포함되어 서버로 전송됩니다.
TCP 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함합니다.
TCP 특징
전송 제어 프로토콜 (Transmission Control Protocol)
1. 연결 지향 - TCP 3 way handshake (가상 연결)
2. 데이터 전달 보증
3. 순서 보장
4. 신뢰할 수 있는 프로토콜
TCP는 UDP에 비해 상대적으로 신뢰할 수 있는 프로토콜이다.
TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 3 way handshake를 사용하는 연결지향형 프로토콜입니다.
또한 TCP는 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 IP 패킷의 한계인 비연결성을 보완할 수 있습니다.
만약 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있습니다. 이를 통해 IP 패킷의 한계인 비신뢰성(순서를 보장하지 않음)을 보완할 수 있습니다.
UDP (User Datagram Protocol) 사용자 데이터그램 프로토콜
하얀 도화지에 비유
비 연결지향 - TCP 3 way handshake X
데이터 전달 보증 X
순서 보장 X
데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
신뢰성보다는 연속성이 중요한 서비스(e.g. 실시간 스트리밍)에 자주 사용됨.
UDP는 IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜입니다.
앞서 TCP 특징과 비교해 보면 신뢰성은 낮지만 3 way handshake 방식을 사용하지 않기 때문에 TCP와 비교해 빠른 속도를 보장합니다.
HTTP3는 UDP를 사용하며 이미 여러 기능이 구현된 TCP보다는 하얀 도화지처럼 커스터마이징이 가능하다는 장점이 있습니다.
TCP: 좋은 기능이 다 들어있는 무거운 라이브러리
UDP: 필요한 기능만 들어있는 가벼운 라이브러리
체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치)속에서 송신된 자료의 무결성을 보호하는 단순한 방법