IP 프로토콜에서 발생하는 문제를 TCP가 해결해준다.
인터넷 프로토콜 스택의 4계층
프로토콜 계층
채팅 프로그램으로 미국 친구에게 메시지를 전송하고 싶다.
그럴려면 어떻게 해야할까?
먼저 Socket 라이브러리를 통해서 OS 계층에 메시지를 넘긴다.
OS 계층에서 메시지에 TCP 정보를 씌운다.
TCP 밑엔 IP 계층이있다. 그래서 TCP정보 밖에다가 또 IP 패킷을 생성한다.
그리고 마지막에 네트워크 인터페이스를 통해 LAN카드를 통해서 나갈때 이더넷 프레임을 포함해서 나간다.
TCP 특징
- 전송 제어 프로토콜 (Transmission Control Protocal)
연결지향 - TCP 3 way handshake (가상연결)
- 클라이언트랑 서버랑 연결된걸 확인하고 메시지를 보냄
1. 일단 TCP 프로토콜로 연결을하면 클라에서 서버로 먼저 SYN이란 메시지를 보내고
2. 서버에서 ACK란 응답 메시지를 클라에게 보낸다
3. 클라가 확인하고 ACK란 메시지를 서버에게 보낸다 (요즘엔 ACK 보내며 데이터 같이 보내기도함)
4. 데이터 전송
이렇게 메시지를 3번 주고받으면 둘이 연결됐음을 인식한다. 이렇게 연결 된 후 데이터를 전송한다.
알고있어야 할 점은 이건 진짜 연결된게 아니라 개념적으로만 연결된거다
클라랑 서버랑 연결이 됐다보구나 하며 논리적으로만 이해하면된다.
클라에서 서버까지 가는데 수많은 노드를 걸치는데 그 노드들은 클라랑 서버가 연결이 됬는지 안됐는지 모른다
그냥 우리끼리만 연결이 됐다고 생각하자~ 라고 논리적으로 연결된거다
나를 위한 전용 랜선이 보장되는게 아니다
데이터 전달 보증
- 패킷이 중간에 누락되면 알 수 있다
순서 보장
위의 특징때문에 TCP를 신뢰할 수 있는 프로토콜이라 부른다.
현재는 대부분 애플리케이션에서 TCP를 사용한다
UDP 특징
사용자 데이터그램 프로토콜 (User Datagram Protocol)
- 하얀 도화지에 비유 (기능이 거의 없음)
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- - IP와 거의 같지만 PORT, 체크섬이 추가된다
- - 애플리케이션에서 추가 작업 필요
- PORT 여러개면 하나의 IP에서 여러 애플리케이션이 돌 수 있음
'Spring > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
6. 웹 브라우저 요청 흐름 (0) | 2023.08.20 |
---|---|
5. URI (0) | 2023.08.20 |
4. DNS | 인터넷 네트워크 정리 (0) | 2023.08.20 |
3. PORT (0) | 2023.08.20 |
1. IP (Internet Protocol) (0) | 2023.08.20 |