김영한님의 강의를 통해 배운 내용을 기록
강의 링크
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 -> HTTP, FTP
- 전송 계층 -> TCP, UDP => IP위에 TCP를 올려 한계점을 보완해주는 것
- 인터넷 계층 -> IP
- 네크워크 인터페이스 계층
프로토콜 계층
- 채팅을 예로 들어 프로토콜 계층 흐름을 파악해보자
- 메시지가 작성되면 socket 라이브러리를 통해 전송 계층으로 넘어간다.
- 전송계층에서 TCP 정보가 생성되고 메시지 데이터에 씌워지고 인터넷 계층으로 넘어간다.
- 인터넷 계층에선 IP 패킷이 생성되고 메시지 데이터 + TCP 정보에 씌워진 뒤 네트워크 인터페이스로 넘어간다.
- 네트워크 인터페이스에선 Ethernet frame이 씌워지고 인터넷을 통해 전달된다.
TCP/IP 패킷 정보
패킷 ? package + bucket 합성어
- TCP 정보에는 아래와 같이 출발지 port, 목적지 port, 전송제어, 순서!, 검증정보 등이 포함된다.
TCP 특징
전송 제어 프로토콜(Transmission Control Protocol) : 전송을 제어하는 녀석!
- 연결 지향 (연결 여부를 확인하고 데이터를 보낸다.): TCP 3 way handshake (가상 연결)
- 데이터 전달 보증 (데이터 전달이 누락되면 알 수 있다.)
- 순서 보장( 패킷 순서 보장)
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
1. TCP 3 way handshake
- 클라이언트가 서버로 SYN(접속요청)을 보낸다.
- 서버가 응답할 수 있는 상황이면 클라이언트로 SYN + ACK (접속요청 + 요청수락)을 보낸다.
- 서버로부터 응답을 받은 클라이언트는 다시 ACK(접속 요청)을 서버로 보낸다.
- 이후 둘 사이에 연결이 확인되면 데이터를 전송한다.
다만, 요즘은 최적화가 잘 되어있어 3.ACK 과정과 4.데이터 전송을 한번에 처리하기도 한다.
또한 위 과정을 통해 연결을 확인하는 과정은 실제로 연결이 되었음을 보장하는 것이 아닌 논리적으로 연결이 되었겠구나 생각하는 것이다. 즉, 가상 연결을 기반으로 한다.
2. 데이터 전달 보증
- 데이터를 전송했을 경우 응답을 해줌으로써 데이터 전달 여부를 확인할 수 있다.
3. 순서 보장
위와 같은 특징을 가능하게 하는 것은 TCP 정보에 포함되어 있는 전송제어, 순서, 검증정보..등의 역할때문
UDP 특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결 지향 -> TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
- 정리
- IP와 거의 같지만 port + 체크섬 기능이 추가
- 하나의 IP 주소를 사용하는 컴퓨터에서 여러 패킷이 올 경우 어떤 용도의 패킷인지 구분하기 위해 port를 사용
- 알맞은 데이터가 넘어왔는지 확인하는 체크섬
- 애플리케이션에서 추가 작업 필요