인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 사용자와 가장 가까운 계층으로, 사용자-소프트웨어 간 소통을 담당하는 계층
- 사용자 또는 애플리케이션이 네트워크에 접속 할 수 있게 해주는 계층
- 전송 계층 - TCP, UDP
- 통신 노드 간 신뢰성 있는 데이터 전송을 보장하는 계층
- 물리적으로 연결하고, 경로를 지정했으면 이제 데이터를 전송해야하는데, 데이터를 전송하는 방법을 정의하는 계층
- IP 프로토콜에서 발생했던 수많은 문제들을 TCP 프로토콜이 해결
- 인터넷 계층 - IP
- 패킷을 최종 목적지까지 라우팅하는 계층
- 방대한 인터넷 계층에서 어디로 보낼지 경로를 선택하는 계층
- 네트워크 인터페이스 계층
- 데이터를 전기신호로 변환한 뒤, 물리적 주소인 MAC 주소를 사용해, 알맞은 기기로 데이터를 전달하는 계층
- 실제로 랜선을 꼽는 랜카드나 랜카드 드라이버등, 물리적인 영역을 표준화 하는 계층
프로토콜 계층
- 애플리케이션 계층에서 SOKET 라이브러리를 통해서 OS 계층에 메시지 데이터를 넘김
- OS계층에서 메시지 데이터에 TCP데이터를 추가하고 IP와 관련된 데이터를 추가 (IP 패킷 생성)
- 그리고 패킷은 네트워크 인터페이스 계층에서 LAN카드를 통해서 나갈 때 Ethernet frame이 포함되서 나감
TCP/IP 패킷 정보
- IP패킷안에 TCP와 관련된 데이터가 들어감
- IP 프로토콜에서 발생했던 비연결성, 비신뢰성 등의 문제를 해결
- 내 IP로 여러 애플리케이션을 사용할 때 수신되는 패킷을 PORT로 구분
TCP 특징
- 전송 제어 프로토콜(Transmission Control Protocol)
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
- 연결지향 - TCP 3 way handshake(가상 연결)
- 연결이 되는지 연결부터 확인
- 데이터 전달 보증
- 데이터를 수신했는지 확인 가능
- 순서 보장
- 나누어 보낸 패킷이 순서대로 도착 했는지
TCP 3 way handshake
- 연결 해줘(클라이언트) > 연결해줄게 + 나도 연결해줘(서버) > 연결해줄게(클라이언트)
- 3 way handshake를 통한 연결은 물리적인 연결이 아닌 논리적인 가상 연결임
- 개념적으로 연결된 것으로 그 사이의 수많은 노드들은 연결이 되었는지 알 수 없음
- 최근에는 최적화가 되서 3번 ACK를 보낼 때 데이터도 같이 보냄
데이터 전달 보증
- TCP에서 데이터를 전송할 때, 데이터를 수신하면 이를 잘 수신했다는 확인 응답(ACT)를 해줌
- 클라이언트 측에서는 해당 응답을 통해서 송신한 데이터가 잘 전송되었는지 확인 가능
순서 보장
- 서버측에 도착한 패킷이 순서대로 오지 않았다면 해당 패킷부터 재전송 요청
- 1 > 3 > 2 순으로 도착하면 2부터 다시 보내도록 함(서버에서 내부적으로 최적화 가능)
UDP 특징
- 사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
- TCP는 수정이나 최적화를 못하지만 UDP는 최적화 가능
참고 - https://junu0516.github.io/posts/tcp_ip_4%EA%B3%84%EC%B8%B5/
'HTTP 웹 기본 지식' 카테고리의 다른 글
URI와 웹 브라우저 요청 흐름[URI] (0) | 2022.11.22 |
---|---|
인터넷 네트워크[DNS] (0) | 2022.11.21 |
인터넷 네트워크[PORT] (0) | 2022.11.21 |
인터넷 네트워크[IP(인터넷 프로토콜)] (0) | 2022.11.21 |
인터넷 네트워크[인터넷 통신] (0) | 2022.11.21 |
댓글