인터넷은 애플리케이션 게층에 트랜스포크 계층 프로토콜을 제공한다.
TCP와 UDP는
TCP가 필요한 이유는? IP 때문이다
인터넷 네트워크 프로토콜은 IP를 갖는다. IP는 통신하는 호스트들 간에 세그먼트를 전달하는데, 어떠한 보장도 하지 않는다. 세그먼트가 순서대로 전달되는 것을 보장하지 않고, 세그먼트 내부 데이터의 무결성도 보장하지 않는다.
1.연결지향형 서비스
TCP는 애플리케이션 계층에 패킷을 전송하기 전에 클라이언트와 서버가 서로 전송 제어 정보를 교환해 연결한다.
이 단계를 3-way handshake라고 한다. 연결을 해제할 땐 4-way handshake를 거친다.
이 절차는 양쪽 모두 데이터를 전송할 준비가 되었으며, 서로 TCP 접속이 성공했다는 것을 알기 위해서 필요하다.
이 핸드셰이킹 단계가 지나면, TCP 연결이 두 프로세스 소켓 사이에 존재한다고 말한다.
2.신뢰적인 데이터 전송 서비스
통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달한다.
각 프로세스는 소켓을 가지고 있다. 이 소켓을 이용해서 네트워크에서 프로세스로 데이터를 전달하거나, 프로세스에서 네트워크로 데이터를 전달한다.
즉, 소켓이 출입구 역할을 한다고 할 수 있다. 하나 이상의 데이터를 전달하기 위해 소켓이 여러개 생성될 수 있다. 소켓은 하나의 유일한 식별자를 갖기 때문에, 구별할 수 있다.
역다중화(demultiplexing)
트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화라고 한다.
다중화(multiplexing)
출발지 호스트에서 소켓으로부터 데이터를 모은다.
이에 대한 세그먼트를 생성하기 위해 각 데이터 헤더 정보를 캡슐화한다.
그 세그먼트들을 네트워크 계층으로 전달하는 작업을 다중화라고 한다.