인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
웹 브라우저, 네트워크 게임, 채팅 프로그램 등이 속한다.
SOCKET 라이브러리 존재.
- 전송 계층 - TCP,UDP
- 인터넷 계층 - IP
전송계층과 인터넷 계층을 묶어서 OS
- 네트워크 인터페이스 계층 - LAN 카드,LAN 드라이버 등
=> 4 계층을 가진 프로토콜이 인터넷을 통해 서버로 데이터 전달
동작 순서
- 프로그램이 'Hello, world!'라는 메세지를 생성한다.
- SOCKET 라이브러리를 통해 생성한 메세지를 전달한다.
- TCP 정보를 생성하고, 메세지 데이터를 포함한다.
- IP 패킷을 생성하고 TCP 데이터를 포함히킨다.
TCP(Transmission Control Protocol)
말 그대로 전송 제어 프로토콜. IP 프로토콜의 한계점을 극복하는 특징들을 가지고 있다.
특징
- 연결 지향 : TCP 3way handshake, 연결을 먼저 하고 보낸다. ➡️ 비연결성 해결
- 데이터 전달 보증: 메세지 누락을 방지한다. ➡️ 비신뢰성 해결
- 데이터 순서 보장 ➡️ 비신뢰성 해결
이러한 특징 덕에 신뢰할 수 있는 프로토콜로 현재 가장 많이 쓰이고 있다.
TCP 3 way handshake
TCP 프로토콜에서 연결을 보장하기 위한 방법으로, 다음과 같은 4단계를 통해 데이터 전송이 이루어진다.
- 클라이언트 - SYN ➡️ 서버
: 서버로 접속 요청을 보낸다.
- 클라이언트 ⬅️ SYN+ACK - 서버
: 서버는 요청을 수락하고, 클라이언트로 접속 요청을 보낸다.
- 클라이언트 - ACK ➡️ 서버
: 클라이언트도 서버의 요청을 수락한다.
- 클라이언트 - 데이터 전송 ➡️ 서버
: 이제 데이터를 서버로 전송한다.
여기서 1~3단계는 연결 과정이다. (3,4단계를 합쳐 요청 수락과 동시에 데이터를 전송할 수 있다.)
- SYN(synchronize) : 접속 요청
- ACK(accept) : 요청 수락
다만 물리적 연결을 보장하는 것이 아닌 개념적 연결을 보장하는 것.
➡️ 서로 요청을 수락했지만 중간에 낀 노드들의 상태를 보장할 수 없기 때문.
데이터 전달 보증
데이터 전송 ➡️
⬅️ 데이터 응답
한 쪽에서 데이터를 전송하면 반드시 전달 상태에 대한 응답이 돌아온다.
데이터 순서 보증
[패킷1,패킷2,패킷3] 순서로 전송 ➡️ [패킷1,패킷3,패킷2] 순서로 도착
➡️ 패킷 2부터 다시 보내라는 응답을 보낸다. 순서에 대한 검증이 가능해진다.
UDP(User Datagram Protocol)
사용자 데이터그램 프로토콜. 기능이 거의 없어서 IP와 유사하다고 볼 수 있다.
- IP의 기능 + PORT + 데이터 검증 정도만 추가되었다.
- 연결 지향 X, 데이저 전달 보증 X, 순서 보장 X
- 기능이 없는 대신 단순하고 빠르다.