2021년 9월 13일에 작성된 문서 1번 입니다.
http 배운 내용을 정리했습니다.
IP와 IP Packet

복잡한 인터넷 망 속 수많은 노드들을 지나 어떻게 클라이언트와 서버가 통신할 수 있을까요?
IP(인터넷 프로토콜) 주소를 부여

- IP 주소를 컴퓨터에 부여하여 통신.
- IP는 지정한 IP 주소(IP Address)에 패킷(Packet) 통신 단위로 데이터 전달
IP 패킷

- 패킷: pack + bucket이 합쳐진 단어 (소포로 비유)
- IP 패킷은 이를 데이터 통신에 적용한 것이라고 보면 된다. (우체국 송장)
- 데이터 전송하기 위해 출발지 IP, 목적지 IP 같은 정보 포함.
클라이언트 패킷 전달

- 패킷 단위 전송시, 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달.
이를 통해 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있습니다.
서버 패킷 전달

- 서버에서 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려줘야한다.
- 서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달.
IP프로토콜의 한계
1. 비 연결성
1-1. 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송

- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 클라이언트는 서버의 상태를 파악할 방법이 없어 패킷을 그대로 전송.
2. 비 신뢰성
2-1. 중간에 패킷이 사라질 수 있음

- 중간에 있는 서버가 데이터를 전달 중 장애가 생겨 패킷이 중간에 소실되도 클라이언트는 이를 파악할 방법이 없다.
2-2. 패킷의 순서를 보장할 수 없음

- 데이터의 용량이 클 경우 패킷 단위로 나눠 전달하는데 이때 패킷들은 중간에 서로 다른 노드를 통해 전달될 수 있다.
- 이렇게 되면 클라이언트가 의도하지 않은 순서로 서버에 패킷이 도착할 수 있다.
TCP vs UDP
OSI 7계층과 TCP/IP 4 계층

- 네트워크 프로토콜 계층은 OSI 7계층과 TCP/IP 4 계층으로 나눌 수 있다.
- IP 프로토콜 보다 더 높은 계층에 TCP 프로토콜이 존재해 IP 프로토콜의 한계를 보완할 수 있다.
채팅 프로그램에서 메시지를 보낼 때 어떤 일이 일어나는 지 자세히 알아봅시다.

- HTTP 메시지가 생성되면 Socket 라이브러리를 통해 전달.
- 네트워크 소켓(Socket): 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, 네트워크 환경에 연결할 수 있게 만들어진 연결부
- IP 패킷을 생성하기 전 TCP 세그먼트를 생성.
- 생성된 TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임 워크에 포함되어 서버로 전송.
TCP/IP 패킷

- TCP 세그먼트가 포함하는 것들:
- IP 패킷 출발지
- IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT
- 목적지 PORT
- 전송 제어
- 순서
- 검증 정보 등
TCP (전송 제어 프로토콜) 특징
1. 연결 지향 : TCP 3 Way Handshake (가상 연결)
TCP는 장치 사이에 논리적인 접속을 성립하기위해 3 way handshake 사용하는 연결지향형 프로토콜.

- 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냄
- 서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN가 설정된 패킷을 발송하고 클라이언트가 ACK으로 응답하기를 기다림.
- 클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되며 데이터를 전송할 수 있다.
- ACK는 Acknowledgment 약자
- 만약 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 떄문에 데이터를 보내지 않는다.
- 현재에는 최적화가 이루어져 ACK을 보낼때 데이터를 함께 보내기도.
2. 데이터 전달 보증

- TCP는 데이터 전송이 성공적으로 이루어지면 이에 대한 응답을 돌려줘 IP 패킷의 한계인 비연결성을 보완할 수 있다.
3. 순서 보장

- 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있다.
- IP 패킷의 한계인 비신뢰성을 보완할 수 있다.
UDP (사용자 데이터그램 프로토콜) 특징
UDP는 IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜

- TCP와 비교하면 신뢰성은 낮지만 3 way handshake 방식을 사용하지 않아 빠른 속도를 보장.
- HTTP3는 UDP를 사용하며 하얀 도화지처럼 커스터마이징이 가능하다.
- 체크섬(checksum):
중복 검사의 한 형태
오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법.
TCP VS UDP
TCP | UDP |
---|
연결지향형 프로토콜 | 비 연결지향형 프로토콜 |
전송 순서 보장 | 전송 순서 보장 안함 |
데이터 수신 여부 확인함 | 데이터 수신 여부 확인 안함 |
신뢰성 높지만 속도 느림 | 신뢰성 낮지만 속도 빠름 |
Written with StackEdit.