Transport Layer : End point간 신뢰성있는 데이터 전송을 담당하는 계층
→ 신뢰성 : 데이터를 순차적, 안정적 전달
→ 전송 : 포트 번호에 해당하는 프로세스에 데이터를 전달
TCP (Transmission Control Protocol)
→ 신뢰성있는 데이터 통신 가능하게 해주는 프로토콜 안정적 전달
→ 특징 : Connection 연결 (3 way-handshake) - 양방향 통신
→ 데이터 순차 전송 보장
→ Flow Control (흐름 제어)
→ Congestion Control (혼잡 제어)
→ Error Detection (오류 감지)
세그먼트 : TCP 프로토콜의 PDU
→ 데이터를 자르고 TCP Header를 붙여서 세그먼트라 함
→ TCP 헤더 : 포트, 순서번호, 9개의 플래그 비트(TCP 연결제어 및 데이터 관리 비트)등이 포함
→ SYN : Connection 연결에 사용되는 플래그 비트 / FIN : 커넥션 연결을 끊었을때 사용 / ACK : 응답을 처리하는 플래그 비트
TCP 3-way handshake (Connection 연결)
1) SYN 비트 1로 설정해 패킷 송신
2) SYN, ACK 비트를 1로 설정해 패킷 송신
3) ACK 비트를 1로 설정해 패킷 송신
TCP의 데이터 전송 방식
1) client가 패킷 송신
2) Server에서 Ack 송신
3) ACK를 수신하지 못하면 재전송
TCP 4-way handshake (Connection close)
1) 데이터를 전부 송신한 client가 FIN 송신
2) Server가 Ack 송신
3) Server에서 남은 패킷 송신(일정 시간 대기)
4) Server에서 FIN 송신
5) Client가 Ack 송신
TCP의 문제점
1) 전송의 신뢰성을 보장하지만 매번 Connection을 연결해서 시간 손실 발생
2) 패킷을 조금만 손실해도 재전송
UDP (User Datagram Protocol)
1) TCP보다 신뢰성이 떨어지지만 전송 속도가 일반적으로 빠른 프로토콜 (순차 전송, 흐름 제어, 혼잡 제어 x)
2) Connectionless (3 way-handshake X)
3) Error Detection
4) 비교적 데이터 신뢰성이 중요하지 않은 경우 사용
ex) 영상 스트리밍
UDP Datagram - UDP 프로토콜의 PDU
데이터 → UDP 헤더 + 데이터 (쪼개지 않음)
UDP 헤더 : 포트번호, 체크섬 등 간단
UDP 데이터 전송 방식 : client가 패킷 송신
중요한 점
1) TCP, UDP 특성을 파악하고 상황에 따라 적절한 프로토콜 사용
2) TCP, UDP 헤더를 파악하고 성능 개선에 활용할 수도 있다