TCP / UDP ?
- 웹 어플리케이션의 신뢰성, 성능 개선을 하는 중요한 역할을 해준다.
TCP / IP 모델
Application Layer
Transport Layer
Internet Layer
Network Access Layer
Transport Layer
- TCP, UDP
- Endpoint 간 신뢰성 있는 데이터 전송을 담당하는 계층
- 신뢰성: 데이터를 순차적, 안정적으로 전달한다.
- 전송: 포트 번호에 해당하는 프로세스에 데이터를 전달한다.
Transport Layer가 없다면?
- 순차 전송이 원활하지 않는다.
- Flow 문제
- 원인: 송수신자 간 데이터 속도 처리 차이
- 수신자 측에서 처리할 수 있는 데이터량이 초과된다.
- 혼잡 문제: 네트워크의 데이터 처리 속도 혼잡해질 수 있다.
- 즉, 데이터의 손실이 발생하게 된다.
TCP
- Transmission Control Protocol
- 신뢰성 있는 데이터 통신을 가능하게 해주는 프로토콜
- Connection 연결 가능하다 -> 3 Way handshake(양방향 통신, 1:1)
- 패킷에 대한 응답을 해야하기 때문에 시간 지연, CPU 소모 등 성능이 낮아진다.
패킷?
- 인터넷 내에서 데이터를 보내이 위한 라우팅을 효율적으로 하기 위해 데이터를 여러 조각들로 나눠 전송하게 되는데 이 조각들이 바로 패킷!
TCP 동작 과정
- 소켓 생성
- 3 Way Handshake 연결 설정
- 데이터 송, 수신
- 4 Way Handshake 연결 해제
UDP
- User Datagram Protocol
- 데이터를 데이터그램 단위로 처리하는 프로토콜
데이터그램?
- TCP는 연결형이지만, UDP는 비연결형 프로토콜이다.
- 연결을 하기 위해 할당되는 논리적인 경로가 없어 각각의 패킷은 다른 경로로 전송되고 독립적인 관계를 지니게 되며, 다른 경로로 독립적으로 처리하게 된다.
- 정보를 주고 받을 때 보내거나 받는 절차를 거치지 않는다.
- UDP 헤더에 Checksum 필드 통해 최소한의 오류만 검출
- 신뢰성이 낮다.
- TCP보다 속도가 빠르다.
- 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.
신뢰성이 필요한 경우 TCP, 성능 향상이 필요한 경우 UDP
참고 자료
https://mangkyu.tistory.com/15
https://www.youtube.com/watch?v=ikDVGYp5dhg![](https://velog.velcdn.com/images/choisooyoung-dev/post/1f61d0d2-d3dd-4045-8712-b090e919aacd/image.png)