- 정의
- TCP, UDP가 대표적이며 애플리케이션계층에서 받은 메시지를 기반으로 세그먼트 또는 데이터그램으로 데이터를 쪼개고 데이터가 오류없이 순서대로 전달되록 도움을 주는 층이다.
- TCP
- 가상회선 패킷 교환 방식
- 회선을 따라 순서대로 쪼개진 패킷이 전달 됨.
- 오류검사 메커니즘
- 재전송: 시간 초과(timeout) 기간이 지나면 서버는 전달되지 않은 데이터에 대해 재전송을 시도한다.
- 체크섬: 체크섬을 통해 무결성을 평가한다. 송신된 데이터와 수신된 데이터의 체크섬 값을 비교해서 올바르게 왔는지 확인.
- 헤더
- 20 ~ 60 바이트로 가변적
- 연결보장
- *3웨이 핸드세이크로 연결을 맺고 **4웨이 핸드셰이크로 연결을 해제하는 작업이 필요함.
- 브로드캐스트
- 브로드캐스트 지원 안됨.
- UDP
- 데이터그램 패킷 교환 방식
- 쪼개진 패킷이 순서가 보장되지 않게 전달 됨.
- 오류검사 메커니즘
- 체크섬만 지원
- 헤더
- 8바이트로 고정
- 연결보장
- 연결이 보장되지 않고 데이터를 그냥 보내기만 함. 연결을 유지하고 해제하는 데 드는 비용이 없어서 속도가 빠름
- 브로드캐스트
- 지원 됨.
*3웨이 핸드쉐이크 - TCP 연결 과정
- SYN 단계
- 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냄.
- SYN + ACK 단계
- 서버는 클라이언트의 SYN(Synchronization, 연결 요청 플래그)을 수신하고 서버의 ISN을 보낸다.
- ISN: TCP 기반 데이터 통신에서 각각의 새 연결에 할당된 고유한 32비트 시퀀스 번호. 연결의 고유성을 부여하기 위함.
- 서버에서 클라이언트로 승인번호를 보낼 때 클라이언트 ISN + 1을 보낸다.
- 서버는 클라이언트의 SYN(Synchronization, 연결 요청 플래그)을 수신하고 서버의 ISN을 보낸다.
- ACK 단계
- 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK(Acknowledgement, 응답 플래그)를 서버에 보낸다.
- 클라이언트와 서버의 상태
- 클라이언트
- closed, syn-sent, established 순서로 진행
- 서버
- closed, listen, syn-received, established 순서로 진행
- 클라이언트
** 4웨이 핸드셰이크 - TCP 연결 해제 과정
- 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보낸다. 이후 클라이언트는 FIN_WAIT_1 상태가 되고 서버의 응답을 기다린다.
- 서버는 클라이언트로 ACK라는 승인 세그먼트를 보내고 CLOSE_WAIT 상태에 들어간다. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어간다.
- 서버는 LAST_ACK 상태가 되고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보낸다.
- 클라이언트는 ***TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 된다. 이후 클라이언트는 TIME_WAIT으로 설정된 시간 동안 대기한 후 CLOSED 상태가 된다.
*** TIME_WAIT
- 지연 패킷 등이 발생했을 떄 데이터 무결성을 보장하기 위해 패킷을 기다리는 시간이다. 2 * MSL(Maximum Segment Liftetime, 최대 패킷 수명) 동안 기다린다
출처
CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌
'CS 지식 > 네트워크' 카테고리의 다른 글
IP주소, MAC주소, ARP, RARP (0) | 2024.08.17 |
---|---|
라우팅 (0) | 2024.08.17 |
애플리케이션 계층 (0) | 2024.08.15 |
MTU, MSS, PMTUD (0) | 2024.08.15 |
TCP/IP 4계층 (0) | 2024.08.15 |