인터넷 프로토콜 스택의 4계층
애플리케이션 계층 - HTTP, FTP |
전송 계층 -TCP, UDP |
인터넷 계층 - IP |
네트워크 인터페이스 계층 |
프로토콜 계층
1. 웹 브라우저에서 생성한 메시지를 SOCKET 라이브러리를 통해 전달한다. - 애플리케이션
2. TCP 정보를 생성하고 메시지 데이터를 포함시킨다. - OS
3. IP 패킷을 생성하고 TCP 데이터를 포함시킨다. - OS
4. LAN 드라이버나 장비를 통해 서버에 전달한다. - 네트워크 인터페이스
IP 패킷은 출발지 IP, 목적지 IP 등의 정보만을 담고 있다. IP패킷만으로 전송/응답을 처리할 경우 한계가 있다.
IP 프로토콜 한계 참고 :
https://devmango.tistory.com/61
이러한 한계를 처리하기 위해 TCP가 필요하다.
TCP에는 PORT 정보 및 전송 제어, 순서 보장, 데이터 전달 보증, 검증 정보 등이 포함되어 있다.
1. TCP 3 Way HandShake : 클라이언트와 서버 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달을 시작하기 전 클라이언트가 서버쪽이 준비되었다는 것을 알수 있도록 한다.(신뢰성 있는 연결 보장)
클라이언트와 서버를 연결할 때, 아래와 같은 connect/연결 과정을 거친다.
1. 클라이언트 -> 서버 : SYN
2. 서버 -> 클라이언트 : SYN + ACK
3. 클라이언트 -> 서버 : ACK
4. 데이터 전송
SYN : synchronize sequence numbers - 접속 요청
ACK : acknowledgment - 요청 수락
[STEP 1]
클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다.
이때 클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
[STEP 2]
서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송한 후, 클라이언트가 다시 ACK으로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVED 상태가 된다.
[STEP 3]
클라이언트는 서버에게 ACK을 보내고 이후부터 연결이 이루어지고 양방향으로 데이터를 주고받을 수 있게 된다.
이때 서버 상태는 ESTABLISHED 이다.
2. 순서 보장 : 클라이언트에서 '패킷1 > 패킷2 > 패킷3' 순서로 전송했는데 서버에 '패킷1 > 패킷3 > 패킷2' 순서로 도착하는 경우 서버는 클라이언트에게 '패킷2'부터 다시 보내라고 요청한다.
UDP(User Datagram Protocol)
- 기능이 거의 없음.
- 연결 지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
> IP와 거의 같다. PORT 추가된 정도?
> 애플리케이션에서 추가 작업이 필요하다.
PORT 정보 제공되는 거 빼면 IP프로토콜과 거의 같은데, 그럼에도 UDP를 사용하는 이유?
https://hwanine.github.io/network/UDP/
출처 :
1. https://inf.run/iwNU + 내가 이해한대로 정리!
2. https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake [Mind Net]
'네트워크' 카테고리의 다른 글
DNS (0) | 2022.03.24 |
---|---|
PORT (0) | 2022.03.24 |
IP(인터넷 프로토콜), 패킷(Packet) (0) | 2022.03.22 |
http 공부 참고 사이트 (0) | 2022.03.10 |
네트워크 용어 정리 (0) | 2017.03.31 |
댓글