Intro
- 인터넷 프로토콜 표준이 제정될 때, 지금처럼 두 개로 분리되어 제안되었다.
- 인터넷의 설계 기준과 관계를 보면 IP가 허리인 상태 = 모래시계 형태가 된다.
- 이런 디자인으로 어떤 통신 관련 하드웨어 기술이라도 IP만 있으면 되고 어떤 소프트웨어라도 IP에서 동작하게 할 수 있으면 된다라는 의미이다.
하드웨어와 소프트웨어의 분리 발전이 가능해진 이유일 것이다.
Internet = inter + net = 상호의 네트워크라는 말이다.
독립적인 net을 interaction 할 수 있게 만드는 것이 인터넷이다.
그리고 이렇게 서로 독립적인 net들을 연결하기 위한 프로토콜이 Internet Protocol이다.
IP는 서로 다른 네트워크를 연결하는데 각 네트워크의 관리자들이 있을 것이다.
관리자가 막아버리면 통신을 하지 못할 것이고, 이렇게 포로토콜이 통신의 안정성을 보장못한다면 안된다.
그래서 안정적으로 통신을 할 수 있게 Layer를 까는 것이 TCP이다.
독립적인 net들을 연결하기 위한 프로토콜 = IP
IP들간의 통신의 안정성을 보장하기 위한 Layer = TCP
TCP
- Transmission Control Protocol의 약자로 전송 제어 프로토콜이라고 부른다.
- 안정적으로 패킷이 가지 못할 때 이것을 바로 잡아서 보내는 역할을 한다.
- ACK가 그 역할을 하는데 Acknowledge라는 인식이라는 단어에서 나온 말이다.
- TCP는 패킷을 받은 쪽이 보낸 쪽으로 별도의 ACK 패킷을 만들어 답장한다.
즉, 내가 보낸 것이 상대방한테 잘 도착했는지 보낸 사람이 알 수 있도록 하는 것이다.
- 메세지가 오지 않는다면 제대로 가지 못한 것이다. ACK가 일정동안 오지 않으면 다시 보낸다.
- 메세지가 오지 않는 경우는 2가지일 것이다.
- 진짜 못 갔거나.
- 중간에 답장이 오다가 유실되었거나.
이 둘을 구분하기가 매우 까다롭기에 그냥 보낸 쪽에서 한번 더 패킷을 보낸다.
TCP는 이런 상황들을 고려하며 행동하기에 할일이 많고 그래서 느린 특성은 있지만 믿을만하다. 즉, 신뢰성이 높다.
늘 비교되는 부분이지만 반대로 UDP에 비해서는 속도는 낮다.
UDP
- User Datagram Protocol의 약자로 단방향 통신을 의미한다.
- 데이터의 유실이 생길 수 있어서 신뢰성을 보장하지 못한다.
- 주로 실시간 동영상 서비스 같은 곳에 이용된다.
- 택배를 보낸다고 생각해보자. 서로 간에 연결하지 않고 일단 보내고 보낸 순서도 보장되지 않는다.
- 신뢰성이 없는 데이터를 전송한다. TCP보다 속도가 빠르다.