회선 망을 전부 점유하는 방식을 서킷 통신이라고 하는데 이는 하나의 회선을 점유하기에 단절되면 다시 연결해야하고 누군가 회선을 이용중이라면 기다려야함.
회선을 여러개 추가하여도 결국 연결이 끊기면 처음부터 다시 전송해야하고 가능한 망을 찾아야함.
그래서 나온 방식이 패킷 통신!
데이터를 패킷 단위로 잘게 쪼개서 도착지로 보냄. 쪼개진 패킷들은 남는 회선을 알아서 찾아 목적지까지 도착함. 도착한후 다시 순서에 맞게 조립하고 도착하지 못한 패킷은 다시 재전송을 요청함. (패킷 전송시 TCP는 순서를 지키고 UDP는 순서를 지키지 않음)
이러한 패킷 통신을 위한 인터넷 규약이 TCP/IP.
IP는 단순히 데이터의 조각들을 목적이에 빨리 보내는것만 관심이 있어서 순서가 바뀌거나 패킷이 누락되더라도 신경쓰지 않음.
TCP는 IP보다는 느리지만 정확하게 보냄. TCP는 일련의 번호를 부여하고 도착한 조각을 다시 올바른 순서로 맞추고 손상되거나 분실된 패킷을 다시 요청함.
HTTP, FTP, SMTP 등의 프로토콜이 TCP/IP 기반임.
위에서 설명한바와 같이 TCP는 정확하게 보냄. 구체적으로 설명하자면 가상회선 방식을 사용해서 논리적인 경로를 배정함.(TCP에서의 패킷을 세그먼트라고 함) 그리고 연결할때는 3-way handshaking을 하고 연결을 끊을때는 4-way handshaking을 함. 게다가 흐름 제어(수신자가 버퍼 오버플로우가 나지 않게 송신자가 데이터 처리 속도를 조절해줌)와 혼합 제어(네트워크 내의 패킷 수가 넘치치 않도록 방지해줌) 기능을 제공해 안전성을 보장함.대신 UDP보다 속도가 느림.
정리하자면 TCP는 속도보단 신뢰성이 중요한 데이터를 전송할때 사용함.
TCP 서버의 특징으로는
UDP는 TCP와 다르게 비연결형 프로토콜임. 그래서 논리적인 경로가 존재하지 않음.(패킷들이 각자 진행함. 그리고 독립적인 관계를 갖는 패킷을 데이터 그램이라고 함.) UDP 헤더의 CheckSum 비트를 활용해서 간단한 오류 검출만 해줌. 하지만 정보를 보낸다거나 받았다는 신호를 주고 받지는 않음. 대신 TCP보다 속도가 빠름.
UDP 서버의 특징으로는
표로 비교하면 다음과 같다.
프로토콜 종류 | TCP | UDP |
---|---|---|
연결 방식 | 연결형 | 비연결형 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 보장 여부 | O | X |
수신 확인 여부 | O | X |
통신 방식 | 1:1 | 1:1, 1:N, N:M |
신뢰성 보장 | O | X |
속도 | 느림 | 빠름 |