Algorithm Study

1. 인터넷 네트워크 ( IP/ TCP, UDP/ PORT / DNS)

hyun-1200 2022. 6. 14. 18:34

1. IP

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

 -클라이언트에서 인터넷을 통해 서버로 통신하려 할때, IP주소를 부여하여 통신한다. 

 

IP ( Internet Protocol : 인터넷 프로토콜 )

IP의 역할 

  • 지정한 IP주소에 데이터 전달 
  • 패킷(Packet)이라는 통신 단위로 데이터를 전달 
  • IP 패킷 정보는 : 출발지 IP, 목적지 IP, 기타.. 로 구성되어 있다.
    • 클라이언트 패킷 전달 : 출발 100.100.100.1 / 목적 200.200.200.2/ .. 
    • 서버 패킷 전달          : 출발 200.200.200.2 / 목적 100.100.100.1 / .. 
     

 

IP 프로토콜의 한계 

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 상대방 컴퓨터가 꺼져있어도. 컴퓨터가 없어도 데이터를 전송한다는 의미
  • 비신뢰성 : 중간에 패킷이 사라질 수도 있고, 패킷이 순서대로 오지 않을 수도 있다.
  • 프로그램 구분 : 같은 IP를 사용하는 서버에 통신하는 애플리케이션이 둘 이상이면 구분이 어렵다. 

2. TCP, UDP

- TCP : Transmission Control Protocol - 전송 제어 프로토콜 

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

 

 

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

  • 네트워크 인터페이스 계층
  • 인터넷 계층
  • 전송 계층
  • 애플리케이션 계층

프로토콜 계층

1. 애플리케이션 에서 메세지가 생성되면

2. SOCKET 라이브러리를 통해 전달된다.

3. 메세지에 TCP 정보를 생성한다.

4. 3번에 생성된 데이터에 IP패킷을 생성한다.

5. 4번에 생성된 데이터에 Ethernet frame을 씌워 인터넷을 통해 서버로 전달한다. 

 

IP 패킷 정보

- 전송 데이터 위에 IP 정보 밖에 없다. 

TCP / IP 패킷 정보

- IP패킷 정보 뿐만 아니라 PORT정보, 전송제어, 순서, 검증정보 등의 정보가 더 포함된다.

 

 

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

  • IP 프로토콜의 한계를 보완한다.
  • 연결 지향 - TCP 3 way handshake (가상연결)

1. 클라이언트에서 서버로 접속을 요청한다 : SYN

2. 서버에서 요청을 수락하고 접속을 요청한다 : SYN + ACK

3. 클라이언트에서 서버로 요청을 수락하고, 함께 데이터도 전송할 수 있다. 

  • 데이터 전달 보증

- 데이터를 전송 후, 데이터를 잘 받았다고 전달을 보증한다. 

  • 순서 보장 

 

- 패킷의 순서를 보장하고, 잘못된 순서로 오면 재요청한다.

 

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

 

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

  • 기능이 거의 없어서 하얀 도화지에 비유한다.
  • 연결 지향 X - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만 빠르다.
  • IP와 거의 같지만 PORT, 체크섬 정도만 추가되었다.
  • 애플리케이션에서 추가 작업이 필요하다.
  • 최근에는 TCP보다 UDP가 각광을 받기 시작하는데, 3 way handshake없이 새로 더 편리한 기능을 추가하여 사용할 수 있기 때문이다. 

 


3. PORT

 

한번에 둘 이상 연결해야 하면?

IP에 각각 PORT를 지정해준다.

- IP를 아파트에 비유하고, PORT를 아파트 동호수로 비유하면 이해하기 쉽다. 

 

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

 


4. DNS 

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

 

IP는 기억하기 어렵고, 변경될 수 있기 때문에, DNS를 사용한다.

 

  • IP 전화번호부 라고 비유하면 이해하기 쉽다.
  • 도메인 명을 IP 주소로 변환한다. 

 

도메인 명을 입력하면, 그에 맞는 IP가 응답되어 접속한다.