CS/Network

[인터넷 통신] IP, TCP/UDP, PORT, DNS

pinomaker 2022. 7. 19. 23:50

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

  • 지정한 IP 주소에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달
  • 패킷의 구성 : 출발 IP 주소, 도착 IP 주소, 데이터

IP의 한계

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 된다.
  • 비신뢰성 : 중간에 패킷이 소실 되거나 순서대로 도착하지 않을 수 있다.
  • 프로그램 구분 : 같은 IP 주소에서 사용하는 서버에서 통신하는 프로그램이 두 개 이상이라면 구분이 안 됨.

TCP (Transmission Control Protocol) -> 전송 제어 프로토콜

  • 연결 지향(TCP 3 way handshake) : 연결 후 데이터 전달
  • 데이터 전달 보증 : 패킷이 누락 되었을 경우 확인 가능
  • 순서 보장 : 패킷의 순서대로 전달 가능
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

 

TCP 패킷 정보 : 출발지 PORT, 도착지 PORT, 전송 제어, 순서, 검증 정보.. 

 

TCP 3 way handshake -> 연결 지향

SYN : 접속 요청 ACK : 요청 수락

  1. Client가 Server로 SYN을 보낸다.
  2. Server가 Client로 SYN + ACK를 보낸다.
  3. Client가 Server로 ACK를 보낸다.
  4. 데이터 전송

※ 물리적인 연결이 아닌 가상 연결임.

 


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

  • 기능이 거의 없어서 흰 도화지에 비유 된다.
  • IP에 PORT와 체크섬 정도만 추가된다.
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.

PORT -> 같은 IP 주소 내에서 프로세스 구분

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

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

  • IP 주소는 변경 될 수도 있고, 기억하기 어려움.
  • 전화번호부와 같은 역할
  • 도메인 명을 IP 주소로 변환

DNS Server

  1. 도메인 명으로 DNS 서버에 요청
  2. IP 주소로 DNS 서버가 응답
  3. 응답 받은 IP 주소로 접속