전송 계층이란 목적지까지 신뢰할 수 있는 데이터를 전달하기 위해서 존재한다.
또는 계층 구조의 네트워크 구성요소와 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공한다.
전송 계층은 IPS(인터넷 스위트 프로토콜: 컴퓨터들 끼리 정보를 주고 받을 때 사용하는 통신 규약)에서 인터넷 기반의 TCP/IP 참조 모델과 일반적인 네트워크 모델인 개방형 시스템 간 상호접속(OSI) 모두 포함하고 있다.
이런 식으로 기존에 나뉘어져있던 OSI 7계층 모델에서 5,6,7 계층의 모델을 통합하여 정의한 모델이다.
OSI는 계층에 대한 기능적인 구분을 확실하게 하여 계층 구조와 표준화를 기반으로 하여 통신한다면, TCP/IP 기능은 불필요한 계층들을 통합하여 실질적으로 인터넷에서 어떻게 사용될 것인지에 대한 실용적인 프로토콜과 요구사항을 기반으로 통신한다.
그리고 여기서 사용하는 전송 프로토콜이 TCP와 UDP 프로토콜이다.
TCP는 Transmission Control Protocol의 약자로써 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 다중화 프로토콜의 일종이다.
여기서 다중화란?
하나의 회선을 분할하여 각 분할된 회선마다 개별적으로 독립된 신호를 동시에 송수신할 수 있는 다수의 채널(여기서 채널은 통신로)을 구성하는 기술이다.
1.연결 설정
먼저 TCP는 상대와 연결을 설정하고 통신을 시작한다.
이때 연결 과정은
1) 상대에게 통신하자는 메시지를 보냄
2) 상대가 그에 대한 응답을 보내면서 통신 준비가 됬다고 하면
3) 2번에서 받은 메시지에 대한 응답을 보낸다.
이를 통해서 서로가 통신 준비를 마쳤고 현재 통신이 연결되어있음을 보장한다.(이를 HandShake 방식이라고 한다.)
1.신뢰성 보장과 흐름 제어
연결이 설정되었으므로 데이터를 보낼 수 있게 되는데 여기서 수신측에서 요청한 데이터와 송신측이 보낸 데이터가 일치하는지를 확인하며 수신측이 송신측에게 자신의 상태를 계속 알리게 된다.
2.혼잡 제어
송신측에서 데이터를 전달하고자 할 때, 위의 흐름 제어 기능으로 서로 통신을 주고받으면서 데이터를 전달받는데
1.이때 송신측에서 데이터를 보냈는데 수신측에서 데이터를 받았다는 연락이 오지 않는다.
2.그러면 송신측에서는 데이터를 다시 보내게되는데 이렇게 송신측에서 데이터를 계속 보내게 되면 라우터에 데이터가 쌓이게 된다.
이러면 이제 라우터의 저장용량에도 한계가 있기 때문에 데이터가 손실될 가능성이 생긴다.
이를 방지하기 위해서 AIMD라는 방법을 사용하는데
1. 처음에 데이터를 보낸다.
2. 상대가 데이터를 잘 받았다고 연락이 오면, 데이터를 많이 보내본다.
3. 그러다가 상대가 제대로 받지 못하면 양을 확 줄인다.
이런 방식을 반복하는 게 AIMD(AdditiveIncrease/Multiplicative Decrease) 이다.
토렌트?
TCP는 전체적으로 연결을 하고 지속적으로 통신을 주고받으며 서로의 연결을 확인하기 때문에 굉장히 안정적이지만, 실시간으로 무언가를 해야할 때 굉장히 속도가 오래걸리는 단점이 있었다.
이를 해결하기 위해서 전송 방식을 단순화 시켜 데이터를 빠르게 전송하게끔 만든 것이 UDP다.
전송 방식이 단순하고 속도가 정말 빠르지만 서비스의 신뢰성이 낮고 데이터의 도착 순서가 뒤죽박죽이거나 중복되기도하는 등 손실이 많아서 오류의 검사나 수정이 필요 없는 어플리케이션에서 사용한다.
최근에는 TCP에서도 어느정도 속도가 나오기 때문에 사용하지 않는 추세다.