클라이어트와 서버와 둘이 통신을 할때 중간에 '인터넷' 이라는게 있음
인터넷 망을 통해서 클라이언트가 서버에게 데이터를 보낸다
넘길때 지켜야할 규칙이 있다
이걸 이해하려면 IP에 대해 알아야함
internet protocol
인테넛에서 데이터를 주고받기 위해 사용되는 주요한 프로토콜 중 하나임
IP는 데이터의 경로 설정과 전달을 관리하는 역할을 수행함
지정된 IP 주소에 데이터 전달, 패킷이라는 통신 단위로 데이터 전달함
간단히 말해 데이터 패킷을 보낼 때 어디로 보내야 할지 알려주는 주소 역할을 함
데이터는 IP패킷으로 분할되어 전송되며, 각각의 패킷은 목적지 IP주소를 갖고 있음.
IP버전에 따라 IPv4 IPv6 두가지 주요한 버전으로 나뉨
IPv4를 오랫동안 사용했었는데, 주소 고갈 문제로 인해 IPv6가 도입됨
IP패킷에 자기자신의 IP주소와 수신자의 IP주소 그리고 보낼 데이터 등등을 실어서 보냄
그렇게 인터넷 망에 클라이언트가 IP패킷을 던지면 수많은 노드 중 하나로 연결되어 전달됨
내가 던질때와 수신자가 나에게 던질 때 서로 다른 노드로 전달될 수 있다~
비연결성: 미국친구에게 메세지를 보냈는데 그 친구의 컴퓨터가 꺼져있으면? 이런 경우에는 그냥 나는 미국친구가 받든말든 그냥 보냄. 그러면 난 미국친구가 받았는지 못받았는지 알 수가 없음
즉, 패킷을 받을 대상이 없거나 서비스 불능 상태일지라도 패킷을 전송한다는 거임
비신뢰성 : 중간에 패킷이 소실된다면? 중간에 서버 문제가 생겨서 패킷이 유실되는 상황이 발생할 수 있음. 그리고 여러 개의 데이터를 보냈는데 패킷이 순서대로 안 올 가능성도 생김
즉, 패킷이 중간에 소실되어도 어쩔 수 없다는 한계가 있고, 패킷이 길 경우 나눠서 전송하는데 패킷이 순서대로 전송된다는 보장이 없음
프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분할 수 없음
예를 들어 한 PC에서 인터넷으로 게임도 하고, 노래도 들으면 어떤 프로그램인지 알고 전송할 수가 없다는 거임
이러한 문제점을 해결해주는 것이 TCP!