Git & CS

IP, TCP, UDP, PORT, DNS 요약 정리

승민아 2024. 4. 14. 09:42

IP(Internet Protocol)

  • 지정 IP 주소에 데이터 전달
  • 패킷 단위로 데이터 전달

 

IP 프로토콜의 한계

  • 비연결성 : 패킷 전송시, 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 내가 어떤 친구가 있겠지하고 전송했지만 상대 PC가 꺼져있을 수 있다. 그런 경우에도 난 전송을 하는것을 뜻한다.
    • 난 전송이 제대로 되었는지 모름...
  • 비신뢰성 : 내가 패킷을 전송했는데 패킷이 사라지거나 순서가 제대로 도착하지 않을 수 있다. 이것을 해결 못함...
  • 프로그램 구분 : 한 피씨에서 카톡, 게임 등등.. 여러 애플리케이션이 있는데 통신하는 애플리케이션이 구분할 수 없음..

 

인터넷 프로토콜 4계층

애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층

TCP 아래에 IP 계층이 있다. 그래서 TCP/IP라고 부름.

IP가 TCP로 감싸져 있는 것이다.

 

IP만으로 해결이 안되었던 순서 문제나 비신뢰성 같은 문제를

출발지PORT, 도착지PORT와 순서, 검증에 대한 정보를 추가해서 TCP가 해주는 것이다.

 

TCP(Transmission Control Protocol) 특징

  • 연결 지향 : 3 way handshake -> 먼저 연결을하고 메시지를 보내겠다. 논리적인 연결이지 연결된 수 많은 노드를 고려하지 않음. 가상 연결이라고 생각하자.
    • 3 way handshack : 클라이언트가 syn(chronize)를 보내고 서버가 잘 받았다고 syn+ack를 보냄 클라는 또 ack로 오케이 사인을 보냄. -> 클라와 서버가 서로 믿을 수 있음
  • 데이터 전달 보증 : 메시지가 누락된걸 알 수 있고 데이터 전달을 보증해준다.
  • 순서 보장 : 전송한 순서를 내가 올바르게 순서대로 받을 수 있음.

 

UDP(User Datagram Protocol) 특징

TCP와 달리 순서도 보증도 안해주지만 단순하고 빠르다!

IP와 비슷해보이지만 PORT, 메시지 제대로 왔는지 검증에대한 체크섬이 추가되어 있음.

나에게 맞게 최적화할때 UDP를 손대면 된다!

 

PORT

같은 IP내에 프로세스를 구분하기 위해 PORT를 사용한다!

 

그런데 내가 어떤 포트로 받을지는 서버가 어떻게 알고 응답을 보내주는걸까?

출처 : 인프런 김영한

TCP/IP 패킷에 출발지, 목적지 IP와 PORT를 함께 보내기에

응답을 어디로할지 알 수 있는 것이다.

 

DNS(Domain Name Service)

IP 주소는 바뀔 수 있기에 DNS는 전화번호부 느낌으로 도메인 명을 IP 주소로 변환해주는 역할을 한다.

내 IP 주소가 바뀌어도 도메인을 통해 내 IP로 연결하는 것이다.