인터넷 프로토콜 스택의 4계층
프로토콜 계층
- 프로그램이 메시지(Hello)를 생성한다.
- Socket 라이브러리를 통해 OS 계층으로 메시지가 전달이 된다.
- OS 계층의 TCP에서 메시지에 TCP 정보를 생성한다.
- IP에서 TCP정보가 포함된 메시지에 IP 패킷을 생성한다.
- 네트워크의 LAN 카드에서 이더넷 프레임이 포함되어서 패킷이 전송된다.
TCP/IP 패킷 정보
- IP 패킷에 출발지 IP, 목적지 IP가 들어간다.
- TCP 세그먼트에는 출발지 IP의 PORT, 목적지 IP의 PORT, 전송 제어와 관련된 정보, 순서, 검증과 관련된 정보가 들어간다.
TCP (Transmission Control Protocol)
전송 제어 프로토콜
- 연결지향 - TCP 3 way handshake (가상 연결) : 클라이언트와 서버가 연결을 한 다음에 메시지를 보낸다.
- 데이터 전달 보증 : 데이터가 중간에 소실되면 그 사실을 알 수 있다.
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP를 사용한다.
TCP 3way handshake
- 클라이언트에서 서버로 SYN을 보낸다.
- 서버에서 응답에 성공하면 SYN + ACK를 클라이언트에 보낸다.
- 클라이언트에서도 알겠다는 의미로 ACK를 보낸다.
- 위의 과정을 통해 서버와 클라이언트가 연결이 되면 그때서야 데이터를 전송한다.
- 만약 클라이언트와 서버가 연결이 되어있지 않다면 (3way handshake 실패) 데이터를 전송하지 않는다.
데이터 전달 보증
- TCP가 있으면 클라이언트에서 서버에 데이터 전송을 성공했을 경우
- 성공했다는 응답 메시지를 받게 된다.
- 실패 시 응답 메시지를 받지 않기 때문에 전송에 실패했다는 사실을 알 수 있다.
순서 보장
- TCP에 전송제어 정보, 순서 정보, 검증 정보가 포함되어 있기 때문에 가능한 일이다.
- 클라이언트에서 패킷을 1,2,3 순서로 전송한다.
- 서버에서 패킷을 받았는데 1,3,2 순서로 도착했다면?
- 서버에서 클라이언트에게 2번부터 다시 보내라는 메시지를 보낸다.
- 클라이언트에서 서버로 패킷2번부터 다시 보낸다.
UDP (User Datagram Protocol)
사용자 데이터그램 프로토콜
- 하얀 도화지에 비유 (기능이 거의 없다)
- 연결지향 - TCP 3way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.
- 정리
- IP와 거의 같다. + PORT, + Checksum 정도만 추가되었다.
- 애플리케이션에서 추가로 작업이 필요하다.