HAZEL

[ 섹션 1. 인터넷 네트워크 ] 인터넷통신, IP, TCP/UDP, PORT, DNS 본문

PROGRAMMING/HTTP 웹 지식

[ 섹션 1. 인터넷 네트워크 ] 인터넷통신, IP, TCP/UDP, PORT, DNS

Rmsid01 2021. 8. 18. 20:02

여기서 사용하는 이미지 출처는 모두, 모든 개발자를 위한 HTTP 웹 기본 지식 인프런 수업의 이미지 입니다.


01. 인터넷 통신

인터넷에서 컴퓨터는 어떻게 통신할까 ?

만약, 클라이언트와 서버가 바로 옆에 있다면 케이블로 바로 연결 가능!

그러나, 클라이언트와 서버가 멀리 있다면?!

→ 인터넷 망을 통해서 메시지를 보내야한다!

→ 그러나 인터넷 망은 굉장히 복잡하다. 수많은 노드들이 존재하고, 그걸 뚫고 넘어가야한다.

→ 어떻게 뚫고 넘어가야하는지를 이해하려면, IP ( 인터넷 프로토콜 ) 에 대해서 이해해야 한다!

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

1. IP 인터넷 프로토콜의 동작 방법

: 인터넷을 이용해서, 메시지를 전달하려고 할때는 IP 주소를 이용해야한다.

즉, 클라이언트와 서버가 주소를 부여 받는 것이다.

ex, 클라이언트 IP : 100.100.100.1 서버IP 는 200.200.2

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

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

메시지를 보낼 때, 그냥 보내는 것이 아니라, 패킷이라는 규칙이 있다.

전송데이터를 보낼때, 현재 클라이언트 ip , 목적지(서버) ip 와 메시지를 패킷으로 묶어서 던진다 !

그러면, IP 주소를 찾아가기 위해 서로 노드끼리 던짐 .

서버 또한 아이피 패킷을 만들어서, 클라이언트에 보내게 됨. ( 방향은 아래 그림과는 반대로 이동한다 )

하지만, 인터넷망은 복잡하기 때문에 클라이언트 패킷 전달할 때와, 서버 패킷 전달할 때의 노드의 길이 서로 다를 수 있다.

3. IP 프로토콜의 한계

1 ) 비연결성

패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 - 클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 모름

ex, 받아야하는 PC가 꺼져있는 경우

 

2) 비 신뢰성

  • 중간에 패킷이 사라지는 경우
  • 패킷이 순서대로 안올 수 있음

노드를 타다보면, 패킷이 서로 다른 노드로 이동할 수 있다. 그로 인해, 패킷의 순서가 변경 될 수 있다.

 

3) 프로그램 구분

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

ex, 인터넷 게임을 하면서, 인터넷으로 음악을 듣는 경우 ? 어떤식으로 구분하는가 ?!

이러한 한계를 해결하기 위해 TCP 프로토콜을 사용한다.

 

03. TCP / UDP

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

2. 프로토콜 계층

  • 채팅 프로그램으로 메시지를 전달하고 싶을 때,

1 ) SOCKET 라이브러리를 이용해서, OS 계층에 메시지를 넘김

2 ) TCP 정보 ( 녹색 ) 를 씌움 - 그리고 밑으로 내림

3 ) 그다음, TCP 밖에 IP와 관련된 데이터를 씌움. 즉, IP 패킷이 생성됨

4 ) 네트워크 인터페이스를 통해 나갈때, Ethernet frame ( 물리적인 정보 ) 를 포함해서 나가게 됨.

 

** 패킷 : 패키지 ( 수화물 ) 것 과 덩어리를 뜻하는 버킷의 합성어이다.

3. TCP/IP 패킷 정보

1 ) IP 정보 : 출발지 IP, 목적지 IP, 기타

2 ) TCP 정보 : 출발지 PORT , 목적지 PORT, 전송제어, 순서, 검증 정보 ..

→ IP만으로 해결이 안됬던 문제를 해결 가능함

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

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

: 연결이 먼저 됬는지 확인 한 후, 메시지를 보냄. 연결이 안됬으면 연결을 하고 메시지를 보냄

 

: 클라이언트도 SYN( 연결요청 ) 을 보내고, 서버도 SYN 을 보내고, 요청수락 ( ACK )를 각각 전달해줌 . 만약, 서버가 꺼져있으면, 요청 수락을 해주지 않음 .(응답 없음)

→ 요즘은 최적화가 되기 때문에 마지막 (3) ACK를 보내면서 메시지도 보냄

물리적인 연결이 아니고 논리적인 연결이다! 수많은 노드(서버)에 대해서는 모름!

 

2 ) 데이터 전달 보증

: 패킷이 중간에 누락됬다는 점을 알 수 있음

 

3 ) 순서 보장

: 큰 패킷이 있어서, 잘라서 보내게 됬을 경우, 만약 패킷의 순서가 올바르지 않게 도착했다면!

→ 다 버리고, 올바르지 않은 순서를 보냄 그럼 문제점을 알 수 있음

** 최적화 부분은 다 다르다.

⇒ 신뢰할 수 있는 프로토콜, 현재는 대부분 TCP 사용

5. UDP 특징 ( 사용자 데이터그램 프로토콜 : User Datagram Protocol )

: UDP는 TCP 와 같은 전송계층에 있는 프로토콜이다.

1 ) 기능이 거의 없음

연결지향 - TCP 3 way handshake X , 데이터 전달 보증 X, 순서 보장 X

 

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

TCP 는 3 way handshake 하려면 전송 양도 많고 속도도 느리다. 더 최적화 하고 싶다는 생각이 들어도 할 수 없다. TCP 는 손을 댈수 없지만, 더 최적화하고싶은 생각이 든다면, UDP를 이용하면 된다.

 

3 ) IP와 거의 같지만, PORT 와 체크섬( 이 메시지가 맞는지 검증해주는) 정도만 추가되었다.

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

대부분 TCP로 되어있지만, 최근에는 최적화를 위해 UDP를 사용하면서 뜨고 있다.

 

04. PORT

1. IP 주소만 사용했을 때의 문제점 → 2개이상 연결 시 구분 불가능

⁉️ 만약 인터넷으로 게임도 하면서 음악도 들으면서 메시지를 보내는중이라면 어떻게 될까 ?!

     즉, 한번에 둘 이상 연결하려면 어떻게 해야하는가 ?

IP 만으로는, 구분을 할 수 없기 때문에 PORT 는 개념을 사용!

2. PORT

PORT : 같은 IP 내에서 프로세스 구분

즉, 게임 서버, 화상통화 서버 , 음악 서버 모두 다르게 적용

    • 0 ~ 65535 할당 가능
    • 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음할당 번호
      • FTP - 20, 21
      • TELNET - 23
      • HTTP - 80
      • HTTPS - 443

05. DNS

1. IP의 문제점

  1. IP 는 기억하기 어렵다
  2. IP는 변경될 수 있다.

→ DNS 가 ip 의 문제점을 극복하게 해준다. 

2. DNS ( 도메인 네임 시스템 : Domain Name System )

: 중간에 전화번호부 같은 서버를 제공해줌. 즉, 도메인 명을 IP주소로 변환시켜 줌

DNS 서버에 도메인을 등록할 수 있음. 도메인명으로 찾기 때문에 IP의 문제점을 극복할 수 있음