TCP
- 전이중 : 양방향 동시 통신 가능
- 점대점 : 호스트 간 1:1 통신만 가능
- 신뢰성 있는 통신
- 데이터 전송의 순서를 보장
- 흐름제어, 혼잡제어 기법이 존재
- 세그먼트 단위
3-way handshake
- C->S: 연결 요청(SYN)
- S->C: 연결 요청 확인(SYN+ACK)
- C->S: 연결 확인을 확인(SYN)
4-way handshake
- C->S: 종료 요청(FIN) 그리고 C는 FIN_WAIT1
- S->C: 종료 요청 확인(ACK) 후 C는 FIN_WAIT2
- 여기서 서버는 연결 종료를 위해 송신 버퍼를 닫고 이미 들어있는 데이터를 전송
- S->C: 송신 버퍼가 비워지면 C에 종료 요청(FIN)
- C->S: 종료 요청 확인(ACK) 후 일정 시간 TIME_WAIT
- FIN_WAIT1,2는 ACK와 FIN을 받지 못하더라도 TIME_WAIT될 경우 알아서 close된다.
- 4-way handshake를 통해 종료 시점에 데이터가 소실되는 것을 방지할 수 있다.
- 우아한 종료: 종료할 때 유예시간을 두어 데이터 소실을 방지하는 기법
UDP
- 1:N의 통신 지원
- 단방향 통신
- 신뢰성을 보장하지 않음
- 데이터 순서도 뒤죽박죽
- 데이터가 유실될 가능성이 있음
- 속도는 TCP보다 빠르다
- 기본적은 오류검출만 존재
UDP는 3-way handshake고 뭐고 연결 설정하지 않고 소켓 개설 후 바로 전송한다.
데이터가 유실될 수 있는 대신 속도가 빠르기에 스트리밍 서비스에 적합
반응형
'공부' 카테고리의 다른 글
머지 소트 (0) | 2020.06.02 |
---|---|
퀵소트 (0) | 2020.05.31 |
URL과 URI 헷갈리지 말자 (0) | 2020.05.28 |
REST API (0) | 2020.05.28 |
HTTP와 HTTPS (0) | 2020.05.28 |
댓글