HTTP

[HTTP] 인터넷 네트워크

수수한개발자 2022. 6. 22.
728x90

IP(인터넷 프로토콜)

IP 인터넷 프로토콜의 역할

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

한국에서 미국에 있는 친구하테 Hello World 라는 문자를 보낸다고 가정합니다.

그러면 최소한의 규칙이 있어야 갈 수 있지 않을까? 라는 생각을 하게 됩니다.

그게 IP 주소라는것을 통해 가능합니다.

예를들어 본인의 IP주소가 100.100.100.1이라고 할때 제가 메세지를 보내려는 친구또한 IP주소가 있어야 합니다. 예시로 200.200.200.2 라고 합니다.

IP패킷정보

위 사진과 같은 IP 패킷이라는 규칙이 있습니다.

주소적듯이 내 IP 친구의 IP 를 적습니다. 그렇게해서 IP패킷을 만들고 인터넷망에 던집니다. 

클라이언트 패킷 전달

IP프로토콜에 의해서 서버들이 규약을 따르고 있어서 출발점이 어디고 목적지가 어디인지를 알 수 있습니다.

200.200.200.2를 받을 수 있는 서버는 어디야? 하고 노드들끼리 서로에게 던집니다.

그러다 보면 200.200.200.2인 IP서버에 정확하게 도달하게 됩니다.

반대로 친구도 다시 답장을 보내고 싶으면 적절한 노드를 찾아서 100.100.100.1 IP를 찾아 답장이 오는것입니다.

 

IP프로토콜의 한계

비연결성

   - 편지봉투의 주소를 적어보냈는데 그 친구가 그 주소에 안살아도 보내는것처럼 보낸다.

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

• 비신뢰성

  - 중간에 패킷이 사라지면? -> 해결안됨.

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

      ->예를들어 1) Hello 2) world 이렇게 순서대로 보냈는데 받는 사람이 1)world 2) Hello 이렇게 받을 수 있음

• 프로그램 구분

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

 

인터넷 프로토콜 스택의 4계층

 

프로토콜 계층

미국에 사는 친구에게 채팅프로그램으로 Hello world 메시지를 보낸다고 가정합니다.

보통 SOCKET라이브러리를 많이 쓰는데 SOCKET라이브러리가 OS에 Hello world메세지를 넘깁니다.

OS에서 Hello world 메세지에다가 TCP정보를 씌웁니다.(위의 3번 옆에 네모박스를 보시면 메세지위의 TCP가 씌어져있습니다.)

그 정보를 가지고 IP에 관한 정보를 씌웁니다. 그래서 IP 패킷이 생성이 되고 그래서 우리가 보낸Hello world 메세지에는 tcp와 ip 정보가 씌어진채로 보내집니다.

 

TCP / IP 패킷 정보

 

위의 설명한 IP 패킷주고에 TCP의 정보가 들어간 형태입니다.

출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 들어갑니다. PORT는 뒤에서 설명하겠습니다.

IP프로토콜의 한계였던 순서, 제어 등 문제가 TCP로 해결이 됩니다.

 

TCP 특징 전송 제어 프로토콜(Transmission Control Protocol)

• 연결지향 - TCP 3 way handshake (가상 연결)

• 데이터 전달 보증

• 순서 보장

• 신뢰할 수 있는 프로토콜

• 현재는 대부분 TCP 사용

 

TCP 3 way handshake

TCP의 연결 과정입니다.

1.클라이언트에서 SYN이라는 메세지를 보냅니다.

2.서버에서 받으면 ACK라는 메세지를 클라이언트에 보내면서 SYN을 보내서 나도 연결해줘! 하고 메세지를 보냅니다.

3. 클라이언트가 알겠어!하고 ACK를 보냅니다.

이렇게하면 서버와 클라이언트 서로 믿을 수 있는 통신환경이 됩니다.

 

데이터 전달 보장 

 

순서 보장

 

예를들어 패킷의 크기가 커서 패킷을 나눠서  1,2,3 순서로 보냅니다.

도착을 했는데 1번, 3번, 2번 순서로 받으면 서버가 다 버리고 패킷을 2번부터 보내라고 합니다.

그러면 클라이언트가 잘못되었구나! 하고 2번부터 다시 보내게 됩니다. 그래서 순서가 보증이 됩니다.

이런것들이 되는 이유가 TCP 세그먼트에 전송제어,순서, 검증 정보가 다 들어 있어서 가능한 것입니다.

그래서 TCP가 신뢰할 수 있는 프로토콜이라고 이야기를 합니다.

 

UDP 

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

• 하얀 도화지에 비유(기능이 거의 없음)

• 연결지향 - TCP 3 way handshake X

• 데이터 전달 보증 X

• 순서 보장 X

• 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

• 정리

  -  IP와 거의 같다. +PORT +체크섬 정도만 추가

  - 애플리케이션에서 추가 작업 필요

 

PORT

포트는 배가 도착하는 항구 이런 뜻이다.

우리가 위에서 IP 프로토콜을 배웠으면 이제  게임도하고 음악도 듣고 메세지도 보내려면 어떻게 되는거지? 라는 생각을 하게 됩니다. IP프로토콜위에서 움직이는데 이미 내 IP는 음악을 듣고 있기때문에 다른것들은 어떻게 받고 보내고 할 수 있는걸까 ?

위에서 살펴본 TCP / IP 패킷에 출발지 IP, PORT와 목적지 IP, PORT가 있었습니다. IP는 내 위치,서버 이고 

PORT는 애플리케이션을 구분해주는것이라고 이해 하면 될 것 같습니다.

그래서 위의 그림과 같이 통신하게 됩니다.

클라이언트가 게임을 할 때는 200.200.200.2 IP 주소와 11220 PORT로 통신을하고 반대로 서버에서 클라이언트의 게임을 응답을 할 때는 100.100.100.1의 IP 와 8090번 PORT로 응답을 하게 됩니다.

 

PORT의 주소 할당

• 0 ~ 65535 할당 가능

• 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음

• FTP - 20, 21

• TELNET - 23

• HTTP - 80

• HTTPS - 443

 

DNS 

DNS를 알기전에 IP에 대해 다시 짚고 넘어가겠습니다.

  • IP의 단점은 일단 기억하기 어렵습니다.
  • IP는 변경될 수 있습니다. ex) 과거 200.200.200.2에서 신규 IP를 200.200.200.3을 받은 상태.

 

도메인 네임 시스템(Domain Name System)

• 전화번호부

• 도메인 명을 IP 주소로 변환

DNS서버에 도메인명을 등록할 수 있습니다. 도메인명을 등록하고 그것을 IP주소로 바꿀 수 있습니다.

도메인을 사서 IP를 200.200.200.2로 등록을 해놓으면 예를들어 google.com 을 주소창에 치면 DNS 서버가 

 200.200.200.2 IP를 응답해줍니다. 그렇게 접근을 하게 되는 겁니다. IP가 바뀌면 그냥 DNS 서버의 IP주소만 바꿔주면 됩니다. 그래서 IP의 단점 2가지 문제가 다 해결이 되는 모습입니다.

728x90

'HTTP' 카테고리의 다른 글

[HTTP] HTTP 메서드 활용  (0) 2022.06.23
[HTTP] HTTP 메서드  (0) 2022.06.23
[HTTP] HTTP 기본  (0) 2022.06.22
[HTTP] URI와 웹 브라우저 요청 흐름  (0) 2022.06.22

댓글