TCP/UDP
TCP
- 신뢰성있는 데이터 전송을 지원하는 연결지향형 프로토콜
- Sequence Number, Ack Number를 통한 신뢰성 보장
- 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
- 흐름제어와 혼잡제어를 지원하며 데이터의 순서를 보장
UDP
- 일방적으로 데이터를 전달하는 비연결형 프로토콜
- 데이터 전송에 대한 보장을 하지 않음 (비신뢰성)
- 헤더에 Checksum 필드를 통한 최소한의 오류검출
- 속도가 빠름
3-way handshaking
연결을 하여 데이터를 전송하기 위해 TCP에서 3-way handshaking 과정을 거친다.
- 접속 요청 프로세스가 연결요청 메시지 전송(SYN)
- 접속 요청을 받은 프로세스가 수락 (SYN + ACK)
- 마지막으로 접속 요청 프로세스가 수락 확인을 보내 연결을 맺음(ACK)
- SYN(Synchronization) : 연결요청, 세션을 설정하는데 사용되며 초기에 시퀀스 번호를 보냄
- ACK(Acknowledgement) : 보낸 시퀀스 번호에 TCP 계층에서의 길이 또는 양을 더한 것과 같은 값을 ACK에 포함하여 전송
4-way handshaking
4-way handshaking는 세션을 종료하기 위해 수해되는 절차이다.
- 클라이언트가 연결을 종료하겠다는 FIN 플래그를 전송한다.
- 서버는 일단 확인메시지를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 TIME_WAT 상태
- 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 플래그를 전송
- 클라이언트는 확인했다는 메시지를 보냄
- FIN(Finish) : 세션을 종료시키는데 사용되며 더 이상 보낸 데이터가 없음을 표시