Post

IP, TCP, UDP 프로토콜

IP(Internet Protocol)

IP란?

IP는 서로 다른 운영체제 등을 쓰는 다양한 컴퓨터들이 서로 통신할 때 사용하는 약속된 데이터 이동 간의 규약이다.

IP는 osi 7계층 중, 3계층인 네트워크 계층에서 사용하는 프로토콜이다.

인터넷에서 이메일을 확인하거나, 파일을 전송하거나 등의 모든 행위를 할 때 컴퓨터(서버) 간에 데이터 전송이 이루어지게 되는데 이러한 데이터 통신에 대한 규약을 IP(인터넷 프로토콜) 이라고 한다.

IP 주소

컴퓨터는 고유 주소를 가지고 있어야, 그 컴퓨터를 식별하여 데이터를 보내거나 받을 수 있다. 192.168.1.35 등과 같은 형태를 띠며 이를 IP 주소 라고 한다.

쉽게 말해 데이터 오고가는 이러한 통신에 필요한 각 컴퓨터의 숫자로된 고유주소를 의미한다.

메시지가 목표로 하는 컴퓨터에 잘 도착하도록 해주는 역할을 한다. 지정한 이 IP 주소로 데이터를 전달할 수 있다.

IP 역할

  1. 지정한 IP주소(IP address)에 데이터 전달

  2. 패킷(Packet)이라는 통신 단위로 데이터 전달


*IP 패킷 정보

  • 출발지IP, 목적지IP, 전송데이터(메시지)


*클라이언트와 서버 간 패킷 전달 과정

클라이언트 패킷 전달서버 패킷 전달
imageimage

IP의 한계

1. 비연결성

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

image


2. 비신뢰성

  • 중간에 패킷이 사라지면?
  • 패킷이 순서대로 안오면?

image


3. 프로그램 구분

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

image

위와 같은 IP의 한계를 해결할 수 있는 것이 TCP이다.




TCP(Transmission Control Protocol), UDP(User Datagram Protocol)

TCP란?

우선, TCP와 UDP는 osi 7계층 중, 4계층인 전송계층에서 사용하는 프로토콜이다.

TCP는 네트워크 망에 연결된 컴퓨터 프로그램 간 데이터를 순서대로, 에러없이 교환하게 해주는 역할을 한다.


TCP/IP 4계층

image


채팅 프로그램 사용 예시

image


TCP/IP 패킷 정보

image


TCP 특징

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

image

  1. 클라이언트가 서버에게 접속 요청(SYN)

  2. 서버에서 요청 수락(ACK) 후 접속 요청(SYN)

  3. 클라이언트가 서버의 요청 수락(ACK)

  4. 데이터 전송


물리적으로 전용회선이 연결되어 있는 것처럼 논리적인 연결을 통해 데이터를 주고받음.


2. 데이터 전달 보증

image

  • 메시지가 중간에 누락되면 알 수 있음

  • 데이터를 전송하고, 수신호스트가 데이터를 잘 받았다고 응답


3. 순서 보장

image

  • 순서가 잘못되어 도착한 경우 수신호스트가 송신호스트에게 어디서부터 다시 전송해달라고 요청


4. 신뢰할 수 있는 프로토콜

5. 현재는 대부분 TCP 사용


TCP 세크먼트에 전송 제어, 순서, 검증 정보들이 포함되어 있기 때문에 위와 같은 것들이 가능해진 것이다.



UDP란?

사용자 데이터그램 프로토콜

UDP 특징

  1. 데이터 제어에 관한 어떠한 기능이 없음

    • 오직 전송 계층에서 애플리케이션에 데이터를 분배하는 역할만 한다

    • 데이터가 수신지까지 잘 도착했는지를 알 수 없음

  2. 비연결형 - TCP 3 way handshake X

  3. 신뢰성이 낮음 - 데이터 전달 보증 X

  4. 순서 보장 X

  5. TCP보다 속도 빠름

  6. IP와 거의 비슷하되, PORT와 체크섬이 추가된다 : ( IP에는 PORT가 없음 )

TCP와 UDP 비교

프로토콜 종류TCPUDP
연결 방식연결형 서비스비연결형 서비스
패킷 교환 방식가상 회선 방식데이터그램 방식
전송 순서전송 순서 보장전송 순서가 바뀔 수 있음
수신 여부 확인수신 여부를 확인함수신 여부를 확인하지 않음
통신 방식1:1통신1:1 or 1:N or N:N 통신
신뢰성높다낮다
속도느리다빠르다




PORT

image

사용자가 게임, 화상통화, 웹 브라우처 요청을 모두 동시에 실행시킨다고 가정해보자.

서버에서 응답으로 패킷을 클라이언트에게 전달해주는데 전달받은 패킷이 게임, 화상통화, 웹 브라우저 중 어디에 필요한 패킷인지 알 수 없다.(서버에 요청할때도 마찬가지)

클라이언트 PC가 여러대의 서버와 통신하기 위해서는 논리적인 접속 장소를 알아야한다.


IP는 목적지 서버를 찾는다면, PORT는 그 서버 안에서 돌아가는 애플리케이션을 구분하는 것이라고 할 수 있다.

IP : 아파트
PORT : 몇 동, 몇 호


image


웹 브라우저를 요청할 때 TCP/IP 패킷에는 클라이언트의 IP(100.100.100.1)와 PORT(10010)에 대한 정보를 서버에 전달해주기 때문에 서버에서 클라이언트로 응답을 보내줄때 해당 정보의 IP와 PORT에 전달할 수 있다.




DNS(Domain Name System)

도메인 명을 IP 주소로 변환해 주는 시스템


  • IP는 기억하기 어렵다 (ex 200.200.200.2)
  • IP가 변경되는 경우가 많다


이러한 점 때문에 문자로 된 www.google.com과 같은 호스트네임을 쓰게 되고, 이는 기억하기 훨씬 쉽다. 그러나 호스트네임은 컴퓨터가 알아듣지 못한다.

따라서 호스트네임을 IP주소로 변환해주는 서비스가 필요한데, 이것이 바로 DNS(도메인 네임 시스템)이다.

image

DNS 서버에 도메인의 IP를 전화기록부 처럼 기록해놓고 클라이언트가 google.com에 접속하면 해당 도메인의 IP를 DNS 서버에서 찾아 응답으로 보내준다.




📑 참고 자료

인프런: 모든 개발자를 위한 HTTP웹 기본 지식

[네트워크] IP, TCP, UDP 프로토콜

This post is licensed under CC BY 4.0 by the author.