클라이언트가 서버로 데이터를 전송하기 위해선 위 사진과 같은 단계를 거친다.
- 프로그램 내용 작성
- SOCKET 라이브러리를 통해 OS로 전달
- OS에서 TCP 정보를 씌운다.
- 이후 IP 계층에서 TCP정보에 IP 패킷 정보를 씌운다.
- 마지막으로 LAN 카드를 통해 나갈 때 이더넷 프레임을 포함이 되어서 나간다. 참고로 이더넷 프레임은 LAN 카드에 등록된 MAC 주소 등 물리적인 정보가 포함된다.
TCP 특징
전송 제어 프로토콜 (Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증
- 순서 보장
신뢰할 수 있는 프로토콜
현재 대부분 TCP 를 사용
- 클라이언트에서 서버로 SYN
- 서버에서 받은 후 클라이언트로 SYN + ACK
- 클라이언트에서 받은 후 다시 서버로 ACK
이렇게 세 번의 연결(통신)로 서로가 연결되었다고 신뢰하고 통신을 실행한다. 중요한건 실제로 실시간으로 연결이 보장된다는 것은 아니다. 그저 논리적으로 연결이 되었다고 판단하는 것일 뿐이다.
데이터를 전송하고(Request), 데이터 수신(Response) 를 통해 데이터 전달을 보증할 수 있다.
서버에서 내부적으로 최적화를 할 수는 있겠지만, 기본적으로 패킷 순서가 잘못되면 다시 전송요청을 통해 패킷을 순서대로 보내도록 보장할 수 있다.
UDP 특징
사용자 데이터그램 프로토콜 (User Datagram Protocol)
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 단순하고 빠름
- IP와 거의 비슷하지만 PORT와 체크섬정도만 추가된다.
- 애플리케이션에서 추가 작업이 필요하다.
해당 내용은 김영한님의 HTTP 웹 기초 강의(인프런)의 자료와 내용을 사용하였습니다.
'네트워크 > HTTP 기초' 카테고리의 다른 글
HTTP 특징 (1) | 2024.12.13 |
---|---|
웹 브라우저 요청 흐름 (0) | 2024.12.11 |
URI, URL, URN (1) | 2024.12.11 |
HTTP 웹 기초 - DNS (0) | 2024.12.10 |
HTTP 웹 기초 - IP(IP Address) (0) | 2024.12.07 |