UDP (User Datagram Protocol)
- 신뢰성이 낮고 비연결형 서비스를 제공
- 오류 제어, 흐름 제어, 혼잡제어를 모두 하지 않음
- 데이터의 전송순서가 바뀔 수 있음
- TCP와 비교시 속도 매우 빠름
- 헤더가 8Byte로 매우 작음
- RIP과 같은 경로 갱신 프로토콜에 사용
TCP (Transmission Control Protocol)
- 높은 신뢰성을 보장하고 연결형 서비스를 제공
- 오류 제어, 흐름 제어, 혼잡제어를 함
- 데이터의 전송순서가 바뀌지 않음
- 속도가 느림
- 헤더가 20Byte로 큼. 헤더는 신뢰적 통신을 보장하는 Sequence number와 ACK로 구성.
- 3-way handshaking을 통해 신뢰성 있는 연결 보장
3-way Handshaking
3-way Handshaking이란 TCP통신에서 장치간 서로 연결되어있는지 확인하는 방식이다. Client-Server방식에서 TCP통신을 많이 사용한다. 총 3번의 요청/응답 후 연결이 이루어진다.
Status
- Closed : 닫힌 상태
- LISTEN : 포트가 열린 상태로 연결 요청 대기 중
- SYN_RCV : SYNC 요청을 받고 상대방의 응답을 기다리는 중
- ESTABLISHED : 포트 연결 상태
과정
맨처음 Server에서 열려있는 포트는 Listen상태이고, Client에서는 Closed상태이다.
1. Client에서 Server로 연결 요청을 위해 SYN를 보낸다. 여기서 SYN란 Sychronize sequence numbers로 동기화를 위해 양측 최초 패킷에만 보내는 것이다.
2. Server에서 해당 포트는 Listen 상태에서 SYN를 받아 SYN_RCV 상태가 되고, 요청을 정상적으로 받았다는 ACK와 Client도 포트를 열어달라는 SYN를 같이 보낸다. 여기서 ACK란 Acknowledgement is valid로 응답을 정상적으로 받았다고 확인을 위해 보내는 것이다.
3. Client에서는 SYN+ACK를 받고 Established로 상태 변경 후, 응답을 잘 받았다는 ACK를 Server로 보내준다. 응답을 받은 Server 또한 Established로 상태를 변경한다.
양쪽 모두 Established 상태가 되면, 성공적으로 연결이 이루어진 것이다.
References
'CS > 네트워크' 카테고리의 다른 글
[네트워크] DNS란? (0) | 2021.08.31 |
---|---|
[네트워크] REST API란? (0) | 2021.08.31 |
[네트워크] HTTP vs HTTPS (0) | 2021.08.30 |
[네트워크] HTTP 메서드 (0) | 2021.08.30 |
[네트워크] OSI 7계층 및 TCP/IP 프로토콜 (2) | 2021.08.30 |
댓글