IP(Internet Protocol)
역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet: Package + bucket)이라는 통신 단위로 데이터 전달
: IP 패킷 정보에는 출발지 IP, 목적지 IP 등이 들어있다.
한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
: 정확히 패킷이 전달되었는지 알 수 없다.
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라지면? (중간에 어떤 노드에서 패킷이 소실된다면?)
: 정확히 패킷이 전달되었는지 알 수 없다. - 패킷이 순서대로 안오면?
: 패킷을 먼저보낸다고 먼저 받는 것이 아닐 수 있는데(이동하는 경로가 다를 수 있기 때문), 이때 패킷을 받는 입장에서 순서를 알 수 없다.
- 중간에 패킷이 사라지면? (중간에 어떤 노드에서 패킷이 소실된다면?)
TCP, UDP
인터넷 프로토콜 스택의 4계층
높은 계층에서 낮은 계층 순서
- 애플리케이션 계층(Application Layer) - HTTP, FTP
- 전송 계층(Transport Layer) - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층 - 랜카드, 랜드라이버
메시지 통신과정 예시
- 웹 브라우저나 게임과같은 애플리케이션에서 메시지를 생성하고소켓 라이브러리를 통해서 TCP계층에 메시지를 전달한다.
- TCP 계층에서 TCP 정보를 생성하고 앞서 받은 메시지 데이터를 포함하는 TCP 세그먼트를 IP 계층에 전달한다.
- IP 계층에서 TCP 세그먼트를 포함한 IP 패킷을 생성하여 네트워크 인터페이스(LAN 카드)에 전달한다.
- 네트워크 인터페이스에서 패킷을 Ethernet frame으로 감싸서 인터넷을 통해 서버로 전달한다.
- 최종적으로 보내지는 wrapper의 형태는 가장 바깥쪽부터 Ethernet frame - IP 패킷 - TCP 세그먼트 - HTTP 메시지 이다.
TCP/IP 패킷 정보
- TCP 세그먼트에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 있다.
- TCP 세그먼트는 출발지 IP, 목적지 IP 등의 정보를 가지고 있는 IP 패킷으로 감싸져있다.
TCP 특징
: 전송 제어 프로토콜(Transmission Control Protocol)
- 연결 지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증
- 순서 보장
TCP 3 way handshake

- SYN
: 클라이언트가 서버에 SYN 패킷을 보내 연결 요청을 한다.
(데이터 전송을 시작하기 원하는 클라이언트의 초기 시퀀스 번호) - SYN + ACK
: 서버가 클라이언트의 SYN 패킷을 받고 연결을 수락하는 SYN-ACK 패킷으로 응답한다.
(서버의 초기 시퀀스 번호, 클라이언트의 시퀀스 번호+1) - ACK
: 클라이언트는 서버의 SYN-ACK에 대한 ACK 패킷을 보내 연결확인을 완료한다.
(서버의 시퀀스 번호+1)
- 위 과정으로 연결여부 확인
- cf) 최근에는 최적화되어 ACK를 보낼 때 데이터를 보낸다.
데이터 전달 보증
- 클라이언트가 보낸 데이터가 서버에 잘 도착했을 경우 서버는 클라이언트에 데이터를 잘 받았다는 응답을 다시 보낸다.
순서 보장
- 클라이언트가 패킷1, 패킷2, 패킷3 순서로 전송했는데, 서버거 패킷1, 패킷3, 패킷2 순서로 도착했을 경우, 서버는 클라이언트에게 패킷2부터 다시 보내라는 응답을 보낸다.
UDP 특징
: 사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- TCP에 존재하는 연결지향, 데이터 전달 보증, 순서 보장 기능이 없음
- 단순하고 빠름
- IP와 거의 비슷하며 PORT와 체크섬 정도만 추가된다.
- 애플리케이션에서 추가 작업 필요
- TCP는 수정이 불가하므로 최근에는 UDP를 최적화하여 http3에 사용하는 중이다.
PORT
- 앞서 TCP 세그먼트에서 출발지 PORT, 목적지 PORT를 포함한다고 했었다.
- 만약 내 컴퓨터에서 게임과 웹서핑을 같이 하고있다면 이를 PORT로 구분한다.
- IP가 아파트라면 PORT는 몇호인지를 나타낸다고 보면됨
- 0 ~ 65535 할당가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS
: 도메인 네임 시스템(Domain Name System)
- IP는 기억하기도 어렵고 변경될 수 있다.
- 나만의 도메인 명 (ex: google.com)을 DNS서버에 등록해두면, 클라이언트가 도메인 명을 입력하면 나의 IP로 접속한다.
- IP가 변경될 경우 변경된 나의 IP를 원래 도메인에 등록해두면 된다.
공부자료: 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한
'CS > Network' 카테고리의 다른 글
| [HTTP] URI와 웹 브라우저 요청 흐름 (0) | 2024.05.16 |
|---|