인터넷에서 컴퓨터들이 서로 정보를 주고 받는데에 쓰이는 통신 규약인 인터넷 프로토콜 의 모음(set) 중 하나이자 현재 가장 많이 사용하고 있는 인터넷 프로토콜 슈트(internet protocol suite)이다.
* TCP/IP는 하나의 프로토콜을 부르는 단어가 아니라 가장 많이 쓰는 프로토콜 두 개를 한 번에 통칭하는 단어임.
TCP/IP
TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP로 이루어짐. TCP는 IP 통신을 기반으로 작동하기 때문에 따로 별도로 생각하기보다는 하나의 흐름으로 보는게 적절.
IP (Internet Protocol)
비 신뢰성(unreliability)과 비 연결성(connectionlessness) 의 특징이 있음
IP의 정보는 패킷 또는 데이터 그램이라고 하는 덩어리로 나뉘어져 전송되는데.
이 과정에서 데이터가 제대로 전달되었는지, 데이터의 순서가 올바른지를 보장하지 않는 특징,
TCP (Transmission Control Protocol)
데이터 전송 여부, 순서를 보장하기 위해 정보 전달을 통제함.
위의 IP의 문제를 보완하기 위한 목적을 가진 프로토콜.
데이터 안정성을 보장하기 위해 3Way-HandShake 라는 동작 방식을 채택.
1. 상대에게 통신을 하고 싶다는 메세지를 보냄 (SYN)
2. 상대는 그 메세지에 대한 응답과 통신 준비 완료 메세지를 보냄. (SYN-ACK)
3. 2번에서 받은 메세지에 응답을 보냄. (ACK)
위 과정을 통해서 나와 상대방의 통신준비가 모두 마쳐진 상태를 유지하고 통신이 연결되어 있음을 보장하게 됨.
TCP의 장점
신뢰성 보장과 흐름제어
네트워크를 통해서 한 번에 보낼 수 있는 데이터의 양에는 한계가 있어서 패킷이라는 단위로 데이터를 쪼개서 보내게 됨.
한 개의 데이터를 쪼개서 보내게 되다보니, 1. 제대로 데이터가 보내졌는지 2. 순서대로 수신이 되었는지 확인 과정이 필요하게 됨.
이를 해결하기 위해서 TCP에서는 각 패킷에 번호를 부여하여 통신하는 방법을 사용.
예시로... 책을 다른 사람에게 1페이지씩 나누어서 준다고 생각해보면
-. 받는 사람에게 책을 총 5페이지 보낸다고 했을 때, 만약 중간에 3 페이지가 누락된 상태로 4페이지, 5페이지의 내용이 온다면, 받는 사람이 확인해서 3페이지가 없어요. 라고 말해줄 수 있고, 나는 그 페이지부터 다시 보내줄 수 있음. : Stop and Wait 방식
-. 만약에 받는 사람이 2장씩 받을 수 있고, 지금 2 페이지를 한번에 받는 중이라 당장은 한번에 2 페이지를 받기가 힘들 경우, 받는 사람이 보내는 사람에게 지금은 1페이지씩만 보내줘 ㅜㅜ.. 라고 말해줄 수 있음. 보내는 사람이 그 뒤로 1페이지씩만 보내는 속도 조절이 가능해짐. : Sliding Window 방식
혼잡 제어
초기 TCP 컨셉에는 존재하지 않았지만, 인터넷 사용자 수가 늘면서 네트워크에 주어지는 부담을 해결하기 위해 나타난 개념. 보내는 속도가 받는 속도를 넘어갈 경우 발생함.
예시로, 3명에서 한명한테 각각 다른 책을 보낸다고 가정해보자.
받는 사람의 경우는 처리할 수 있는 페이지에 한계가 있고, 본인의 한계치만큼 처리하는 동안 3명이 한꺼번에 보내는 페이지에 대한 리액션을 보내주지 못하게 됨. 그러면 3명이 보낸 페이지 중 누락되는 것들을 땅에 버리게 되고, 3명은 받았다는 회신을 못 받았으니까 또 계속해서 같은 페이지를 보내게 됨. 낭비 발생.
이를 해결하기 위해 한번에 데이터를 보내는 양을 조절하는 것을 의미.
만약 이와 같은 장점 보다 속도가 우선일 경우에는,
신뢰성이 보장되지는 않지만 속도가 빠른 UDP 라는 통신 프로토콜을 이용해보길 바람.