트랜스포트 계층(Layer 4)
JeongSeulho
2024년 11월 25일
준비중...
클립보드로 복사
트랜스포트 계층
- 원하는 어플리케이션으로 데이터를 전달하는 계층 => 포트 번호를 사용
TCP
- 데이터의 신뢰성을 보장하는 프로토콜(통신 실패시 재전송, 왜곡확인 등)
- 세그먼트라는 단위로 분리하여 전송
- 데이터에 번호가 있으며 순서가 유지(순서가 바뀌어도 도착해도 순서대로 조립)
3 way handshake
- 통신하기 전 연결을 확인하고 서로 통신에 필요한 파라미터를 정함(최대 세그먼트 크기 등)
- 전송하는 데이터를 분할하여 전송하는데 이때 패킷 크기를 정함
- 분할 이유 : 데이터 손실에서도 모든 데이터를 다시 보내지않고 일부만 보내도 됨
데이터 전송
ACK
와SEQ
번호를 사용하여 데이터를 잘 전송했는지 확인- 첫 통신에서
SEQ
는 고유한 번호로 지정하여 데이터와 함께 전송 - 받는 쪽에서
ACK
= 받은 데이터의SEQ
+ 데이터 크기 + 1 로 전송 - 받는 쪽에서
SEQ
= 받은 데이터의ACK
로 전송 - 데이터를 보냈는데 보낸 데이터에 해당하는 응답이 오지 않으면 재전송 => 이것을 확인하기 위해
ACK
번호를 사용
4 way handshake
FIN
에 대한ACK
를 보낸 후 서버에 덜 보낸 데이터가 있는 경우 마저 보내고 다시FIN
보냄
TCP 헤더
- 윈도우 사이즈 : 한번에 얼마나 많은 세그먼트를 전송할지 결정
- 세그먼트를 분리하여 전송하는데, 각 세그먼트의 응답이 와야 다음 데이터를 기다림 => 느린 전송을 해결하기 위해 한번에 여러 세그먼트를 보냄
- 첫 통신에서 작게 설정했다가 점차 늘려가며 통신
UDP
- 3 way handshake와 같은 커넥션 없이 바로 데이터 전송
- 속도가 중요한 경우 사용(영상, 음성, 게임 등)
- UDP를 사용하여 데이터 재전송 등은 직접 구현 해야함