Transport Layer Protocol
- TCP, UDP는 5 layer 중 Transport Layer의 통신 프로토콜입니다.
- Transport Layer는 logical connection을 기반으로 프로세스 간의 통신이 일어나는 레이어입니다.
- End point간 신뢰성 있는 데이터 전송을 담당하는 계층입니다.
- 신뢰성: 데이터를 순차적이고 안정적으로 전달
- 전송: 포트번호에 해당하는 프로세스에 데이터를 전달
- flow control을 담당
- congestion control을 담당
TCP: 연결기반, 신뢰성
Application으로부터 받은 Message에 header를 붙여 encapsulation하여 세그먼트로 만들어 logical channel로 전송합니다.
데이터 전송단위: Segment
신뢰성있는 데이터 통신을 가능하게 해주는 프로토콜입니다.
-
3 way-handshake connection - 양방향 통신
- (Client) SYN bit를 1로 설정해 패킷 송신
- (Server) SYN, ACK bit를 1로 설정해 패킷 송신
- (Client) ACK bit를 1로 설정해 패킷 송신
TCP의 데이터 전송 방식
- Client가 패킷 송신
- Server에서 ACK 송신
- ACK를 수신하지 못하면 재전송
TCP의 역할
- 순차전송
- Flow control
- 패킷을 생성하는 샌더와 패킷을 처리하는 리시버 간에 Date rate의 균형을 맞춰야 합니다.
- 리시버의 Date rate가 낮으면 오버플로우가 발생합니다.
- Congestion control
- Flow control을 보장하기 위해 Congestion Window를 이용합니다. 윈도우에 패킷을 담아서 보냅니다.
- 네트워크에서 혼잡 상황이 발생하면 샌더에게 윈도우의 사이즈 조절을 요청합니다. 보통 샌더가 전송하는 데이터가 너무 클 때 혼잡상황이 발생하므로 낮추기를 요청합니다
- Error detection
단점
- 3 way-handshake connenction은 매 번 통신할 때마다 일어나기 때문에 시간 손실
- 패킷을 조금만 손실해도 재전송
UDP: 연결없음, 신뢰안함
Application layer로부터 받은 Message를 세그먼트 단위로 쪼개지 않고, UDP 헤더만 붙여 데이터그램 단위로 처리합니다.
전송 단위: Datagram
UDP의 데이터 전송방식
- Connectionless: Client는 패킷을 확인 안하고 무조건 송신. Server는 소캣 무조건 열어두고 있음
특징
- 순차전송 ❌
- Flow Control ❌
- Congestion Control ❌
- Error detection: UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- 비교적 데이터의 신뢰성이 중요하지 않을 때 사용(ex. 영상 스트리밍)
TCP UDP 비교
중요한 점
- TCP, UDP의 특성을 파악하고, 상황에 따라 적절한 프로토콜을 이용할 수 있다.
- TCP, UDP의 헤더를 파악하고 성능개선에 이용할 수 있다.
추가
- osi 7 layer(수업에서 중요하게 다룬 부분은 아닙니다. 추가된 두 레이어가 있다는 것 정도만 알아두세요.)
- Application
- Presentation
- Session
- Transport
- Network
- Datalink
- Physical