계층화의 이유 : 각 계층별로 역할을 구분해 계층 간 간섭을 최소화하여 사용 편리성을 높임
- 호환성 보장(다른 제조사 장비들끼리도 통신 가능)으로 비용 절감
- 쉬운 문제 해결(계층별로 문제 해결)
- 다른 계층끼리는 전달 과정을 알 필요 없으므로 데이터의 캡슐화와 은닉 가능
IP를 담당하는 계층
TCP/UDP를 담당하는 계층
송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법
수신측이 패킷을 지나치게 많이 받지 않도록 조절하는 것
수신측의 데이터 손실을 방지
제어 방식
Stop and Wait
Sliding Window(Go Back N ARQ)
한 라우터에 데이터가 몰릴 경우 데이터가 처리되지 못해 호스트가 재전송하여 네트워크의 혼잡을 가중시키는 것을 막기 위한 기법
송신측에서 보내는 데이터의 전송속도를 강제로 줄임
제어 방식
SYN
을 보내고 SYN-SENT 상태로 대기SYN
과 ACK
를 보냄ACK
를 보냄상태 | 설명 |
---|---|
CLOSED | 연결 수립 시작 전 기본 상태(연결 없음) |
LISTEN | 포트가 열린 상태로 연결 요청 대기 중 |
SYN-SENT | SYN을 요청한 상태 |
SYN-RECEIVED | SYN 요청을 받고 상대방의 응답 대기 중 |
ESTABLISHED | 연결 수립 완료된 상태, 데이터 교환 가능 |
FIN
을 보내고 FIN-WAIT-1 상태로 대기ACK
를 전달한다. 동시에 해당 포트에 연결되어 있는 애플리케이션에게 close를 요청FIN
을 클라이언트로 보내 LAST_ACK 상태로 바꿈ACK
를 서버에 다시 전송하고 TIME-WAIT으로 상태를 바꿈상태 | 설명 |
---|---|
ESTABLISHED | 연결 수립 완료된 상태, 데이터 교환 가능 |
FIN-WAIT-1 | 자신이 보낸 FIN에 대한 ACK를 기다리거나 상대방의 FIN을 기다림 |
FIN-WAIT-2 | 자신이 보낸 FIN에 대한 ACK를 받았고, 상대방의 FIN을 기다림 |
CLOSE-WAIT | 상대방의 FIN(종료 요청)을 받은 상태. 상대방 FIN에 대한 ACK를 보내고 어플리케이션에 종료를 알림 |
LAST-ACK | COLSE-WAIT 상태를 처리 후 자신의 FIN 요청을 보낸 후 FIN에 대한 ACK를 기다림 |
TIME-WAIT | 모든 FIN에 대한 ACK를 받고 연결 종료 상태. 새 연결과 겹치지 않도록 일정 시간 기다린 후 CLOSED로 전이 |
CLOSED | 연결 수립 전 기본 상태 (연결 없음) |
References
https://inpa.tistory.com/entry/WEB-🌐-TCP-IP-정리-👫🏽-TCP-IP-4계층
https://wooono.tistory.com/507
https://velog.io/@jehjong/개발자-인터뷰-TCPIP-4계층
https://yozm.wishket.com/magazine/detail/1956/
https://dev-coco.tistory.com/144
https://gyoogle.dev/blog/computer-science/network/흐름제어 & 혼잡제어.html