https://computerlove.tistory.com/entry/%EC%9D%B8%ED%84%B0%EB%84%B7-%ED%86%B5%EC%8B%A0
한국에 있는 내가 미국에 있는 친구에게 "Hello, world!"라는 메세지를 보내야 한다.
뭔가 최소한의 규칙이 있어야 한다!..
IP 주소라는 것을 통해 가능해진다.
먼저 클라이언트인 내가 주소를 부여받아야 한다.
<가정>
한국에 있는 나(클라이언트)의 IP : 100.100.100.1
미국에 있는 친구(서버)의 IP : 200.200.200.2
IP 프로토콜의 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
메세지를 그냥 보내는게 아니라 IP 패킷이라는 규칙이 있다.
보내기 전에
전송 메세지에 "출발지 IP, 목적지 IP, 기타... "를 감싼다. (패킷)
IP 패킷을 인터넷 망에 던지는 것!
그러면, IP 프로토콜에서 서버들이 규약을 따르고 있다.
출발지가 어디고, 목적지가 어딘지 다 파악을 한다.
그래서 서로 노드끼리 패킷을 던지는 것.
쭉 던지다 보면 최종적으로 목적지에 도착하게 된다.
그러면, 친구가 메세지를 받았을 때 친구는 어떻게 할까?
똑같이 한다. 나의 출발지 IP와 목적지 IP를 넣고 메세지 잘 받았다고 하고 싶다.
클라이언트가 던진 패킷처럼 서버의 패킷도 묶어서 던져지게 된다.
내가 던질 때랑 친구가 던질 때랑 서로 다른 곳으로 전달될 수도 있다.
(노드를 타고 갈 때 타고가는 노드가 다를 수 있다)
IP주소를 부여하고 패킷을 통해 찾아가는 방식은 한계가 있다.
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성 : 중간에 패킷이 사라지면? / 패킷이 순서대로 안 오면?
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
한 PC에서 인터넷 게임을 하면서 음악도 듣고 있는 경우
그 때 IP가 같기 때문에 어떻게 같은 IP에서 저런 작업들을 병행할 수 있을까?..
어떤 방식으로 구분할 수 있을까? 이런 한계가 있다.
패킷이 소실될 가능성도 있다.
결국은 서버를 거쳐서 전달이 된다.
중간에 서버가 문제가 생기면 패킷이 유실된다.
패킷의 용량이 굉장히 클 때 즉 1500Byte가 넘으면 끊어서 보낸다.
3000Byte면 두개로 끊어서 보내게 된다.
노드를 타고 가면서 중간에 다른 노드를 탈 수도 있기 때문에
순서가 변경되어서 도착할 수 있다.
IP 만으로는 이 문제를 해결할 수 없다.
해결할 수 있는 방법은 ? : TCP, UDP
'CS지식들 > CS' 카테고리의 다른 글
인터넷 통신 (0) | 2022.12.12 |
---|---|
컴퓨터의 구성요소 (0) | 2022.12.11 |
원자성, 동기화, 교착상태 (0) | 2022.12.10 |
동시성과 병렬성 (1) | 2022.12.10 |
HHD, SSD와 파일 시스템 (0) | 2022.12.10 |