인터넷에서 컴퓨터 둘은 어떻게 통신을 할까?
클라이언트와 서버가 서로 바로 옆에 붙어있다면 케이블을 연결해서 메시지를 보내면 연결한 케이블을 통해 메시지를 받으면 되지만 이런 경우는 흔하지 않다.
만약 메시지를 보내야할 대상이 멀리 있다면??
인터넷이라는 망을 통해 전달해야한다.
하지만 인터넷이라는 망의 전달방식은 정말 복잡하다 .
IP
복잡한 인터넷망에서 보내고자 하는 상대에게 메시지를 보내려면 최소한의 규칙이 존재해야한다. 그것이 바로 IP 주소라는 것이다.
먼저 클라이언트인 나 자신은 IP주소를 부여받아야 한다. 그리고 메시지를 받는 상대도 IP주소를 가지고 있어야 아래 역할이 완료된다.
하지만 메시지를 그냥 보내는것은 아니고 IP패킷이라는 규칙이 존재한다.
나의 IP(출발지) , 보내고자 하는 IP (목적지) 와 메시지(전송데이터) 를 패킷에 담아서 인터넷 망으로 던진다!!
패킷에 출발지 목적지 메시지를 담고 던지면 IP 프로토콜 서버들이 다 정해진 규약을 따르고 있기때문에 인터넷 망에서 목적지 서버를 찾아서 도달하게 된다.
상대방도 똑같이 IP 패킷을 만들어 던지면 같은 방식으로 찾아와 메시지를 전달한다.
하지만 IP 프로토콜에도 한계가 존재한다
위 사진으로 예를 들면 클라이언트가 보낼때 받는 대상 서버가 패킷을 받을 수 있는 상태인지 모른다. 그상태로 패킷을 보낼때 컴퓨터가 메시지를 받는게 불가능하면 그러면 받을수 없게된다.
두번째는 인터넷망도 서버들을 거쳐서 전달이 되는데 중간에 서버에 문제가 생긴다면?? 그럼 내가보낸 패킷이 유실이 된다.
세번째는 패킷이 용량이 큰경우 이걸 한번에 보내기 부담스러워서 보통 끊어서 보내는데 그게 보통 1500Byte 정도 된다. 만약 위의 예제가 3000Byte 라고 가정하면 Hello 1500Byte ,world 1500Byte 이렇게 두개를 끊어서 보낼때 1번 Hello를 보내고 2번 world를 보낼텐데 인터넷망에서 빠른 노드를 타고 가다보면 순서가 꼬여서 world Hello를 받게되는 경우도 생긴다.
이런 경우들을 방지하기위해 TCP, UDP 에 대해 학습을 해야한다.
다음 강의를 통해 정리해봐야겠다.
좋은 정보 감사합니다