Spring/모든 개발자를 위한 HTTP 웹 기본 지식

[모든 개발자를 위한 HTTP 웹 기본 지식] 01. 인터넷 네트워크 - 인터넷 통신, IP(인터넷 프로토콜)

HSY_mumu 2022. 5. 25. 22:25
728x90

(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다.

1. 인터넷 통신

1. 인터넷에서 컴퓨터 둘은 어떻게 통신할까?

만약, 클라이언트와 서버가 가까이 있으면 케이블로 2PC를 연결하여 통신할 수 있다.

 

하지만, 클라이언트서버의 거리가 멀면 그 사이에 있는 인터넷망을 통해서 Hello,world 라는 메시지를 보내야 한다.

 

2. 복잡한 인터넷 망

그런데 인터넷망은 너무 복잡하다! 클라이언트(출발지)에서 인터넷 망 내부의 수많은 중간 노드(서버)를 거쳐 메시지를 서버(목적지)로 전달해야 한다. 그럼 어떤 규칙으로 수많은 노드들을 거쳐 목적지에 메시지를 전달할까? 이를 이해하기 위해 IP 에 대해 학습한다.

2. IP(인터넷 프로토콜)

1. IP 주소 부여

메세지를 전달하기 위해서 클라이언트(출발지)와 서버(목적지)의 IP주소가 부여된 상태여야 한다.

 

2. IP(인터넷 프로토콜) 역할

- 지정한 IP 주소(IP Adress)에 데이터 전달

- 패킷(Packet)이라는 통신 단위로 데이터 전달

 

3. IP 패킷 정보

패킷 단위로 데이터를 전달한다. 즉, 전송 데이터(보낼 메시지)와 함께 출발지 IP(클라이언트 IP), 목적지 IP(서버 IP) 등을 함께 묶어 패킷으로 만든 후 전달한다. 

 

4. 클라이언트 패킷 전달

 

5. 서버 패킷 전달

 

6. IP 프로토콜의 한계

1) 비연결성

- 패킷을 받을 대상이 없거나 서비스 불능 상태  패킷 전송

2) 비신뢰성

- 중간에 패킷이 사라지면? → 해결X

- 패킷이 순서대로 안오면? 해결X

3) 프로그램 구분

- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? 구분X

e.g. 한 PC로 게임, 음악 듣기하면 IP는 같음

 

6-1. 비연결성 - 대상이 서비스 불능, 패킷 전송

클라이언트(출발지)에서 패킷을 전송하려고 할 때, 대상 서버(목적지)의 상태는 알 수 없다. 그래서 항상 패킷을 보내게 되는 문제가 있다.

 

6-2. 비신뢰성 - 패킷 소실

만약 인터넷 망의 어떤 중간 노드(서버)가 문제가 생기면, 클라이언트(출발지)에서 보낸 패킷이 유실되는 문제가 있다.

 

6-3. 비신뢰성 - 패킷 전달 순서 문제 발생

패킷의 용량이 매우 클 때, 패킷을 분리해서 보내게 된다. 그런데 그 패킷들이 모두 같은 경로로(같은 노드들을 거쳐서) 이동하는 것은 아니기 떄문에, 패킷 전달 순서가 보장되지 않는 문제가 있다.


1-2. IP(인터넷 프로토콜) 질문 정리

Q. 여기서 말하는 클라이언, 서버의 의미는?

A. 요청자: 클라이언트, 요청 메시지를 받는 곳: 서버

강의에서는 메시지를 보내는 나의 PC에 설치된 애플리케이션 = 클라이언트,

친구의 PC에 설치된 애플리케이션 = 서버

[출처] https://www.inflearn.com/questions/146771

 

Q. 프로토콜이란?

A. 프로토콜 = 통신 규약(약속) 이다.

서로 간에 데이터를 주고 받기위해서 데이터는 이런 모양이어야하고 그 안에 ip, port 라는 게 있어야 한다 등의 약속을 말한다. 인터넷은 실제 byte 데이터를 전달하면서 통신하는데 어떻게 통신할지, 앞의 몇자리는 IP가 들어가고 나머지는 데이터가 들어가는 등 약속이 필요한데, 이것이 프로토콜이다.

[출처] https://www.inflearn.com/questions/268933

 

728x90