프로그래밍/CS

IP 와 TCP/UDP

hwangsehee 2024. 12. 16. 15:03

 

📌 IP (Internet Protocol) 

- 인터넷에서 클라이언트와 서버가 통신할 수 있게 해주는 것 

- 지정한 IP 주소에 데이터 전달

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

IP 패킷

 

클라이언트는 복잡한 인터넷 노드 망을 거쳐 서버(목적지 IP)로 패킷을 전달함 

서버에서도 똑같이 패킷(출발지IP, 목적지 IP, 메시지)을 만들어서 던짐

 

❗ 위 방식은 한계가 있다. 

- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송함. 

- 비신뢰성 : 중간에 패킷이 사라지면? 패킷이 순서대로 안오면? 

  패킷이 너무 커서 보통 1500byte 씩 끊어서 보내는데, 이렇게 끊어서 보낼 때 두번 째 메세지가 먼저 온다면?

- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? 

 

이런 문제를 해결해주는게 TCP 프로토콜 

 

 

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

TCP/IP 패킷 정보

- 메시지에 TCP를 씌우고 IP정보를 씌워서 패킷을 생성

- IP 패킷 안에 TCP 관련 정보가 들어감(PORT,전송제어,순서 검증 정보.. )

 > IP 정보만으로 해결이 안됐던 것 들이 해결 됨. 

 

✏️ 특징

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

- 데이터 전달 보증 

- 순서 보장 

- 신뢰할 수 있는 프로토콜 

- 현재는 대부분 TCP 사용. 

 

TCP 3 way handshake

1. SYN  : 클라이언트가 서버한테 SYN 보냄

2. SYN + ACK : 서버가 클라이언트한테 SYN을 보내고 ACK라는 응답을 함

3. ACK : 클라이언트도 서버한테 ACK 라는 응답을 보냄 

이렇게 1~3 번을 TCP 3 way handshake라고 한다. 

SYN : 접속 요청

ACK : 요청 수락 

 > 논리적으로 연결이 된 것 

 

데이터 전달 보증 

1. 데이터 전송 : 클라이언트 -> 서버

2. 데이터 잘 받음 : 서버  -> 클라이언트 

 

순서 보장 

1. 패킷1, 패킷2, 패킷3 순서로 전송 : 클라이언트 -> 서버 

2. 패킷1,패킷3,패킷2 순서로 도착 

3. 패킷2부터 다시 보내 : 서버-> 클라이언트 

 

TCP 데이터 안에는 전송제어,순서,검증 정보가 추가 되어있기 때문에 위와 같은 특징들이 가능한 것.


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

✏️ 특징

- 기능이 거의 없음

- TCP 와 같은 계층에 있는 프로토콜 

- IP에 + PORT + 체크섬 정도 추가된 프로토콜

- TCP는 데이터 양이 크기 때문에 속도가 느리다. 이때 전송 속도를 최적화하고싶다면 TCP는 그대로 두고 UDP에 추가작업을 한다.

- 기본적으로 TCP를 사용하지만 HTTP3같은 경우에는 UDP를 쓰고있다. 

 

 

📌 PORT 

- 같은 IP 내에서 프로세스를 구분하기 위한 것 

- TCP/IP 패킷에 출발지,목적지 PORT가 들어있다.

- 포트는 0~65553까지 할당 가능

- 0~1023 : 잘알려진 포트이므로 사용하지 않는 것이 좋다.

- HTTP : 80 /FTP :20,21/TELNETL:23 

 

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

- IP는 기억하기 어렵고 변경될 수 있다. 

- 이런 문제를 해결하기 위한 시스템

- 도메인명,IP를 DNS에 등록해 놓으면 도메인명으로 DNS 서버에서 IP주소로 응답해준다. 

- IP가 바뀌면 DNS 서버에 수정 요청 

 

 

 

 

※ 김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식 수강 후 정리 목적으로 작성 되었습니다.

프로그래밍/CS

김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식