본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


Web 지식

웹 개발 기본 공부 3 - IP(인터넷 프로토콜),TCP , UDP

반응형

IP(Internet Protocol)

 

클라이언트와 서버가 인터넷 망을 통해 통신을 하기위해 최소한의 규칙이 필요하며 

 

그 중 하나가 IP 주소이다 .  클라이언트 서버 모두 각자의 IP 주소를 갖어야한다. 

 

이 주소를 통해 지정한 주소에 데이터 전달이 가능하며 ,  패킷(Packet)이라는 통신 단위로 데이터가 전달된다.

 

패킷의 뜻 '수화물'이라는 뜻의 Package 와 '한 양동이(덩어리)'를 뜻하는 Bucket의 합성어

IP 패킷의 구조

 

출발지 IP ,  목적지 IP가 전송 데이터에 씌워지고 출발지로부터 인터넷 망의 노드들을 거쳐 서버로 전송된다.

 

인터넷망이 복잡하기 때문에 요청과 응답은 서로다른 경로를 통해 전달될 수도 있다 .

 

 

IP 패킷의 구조

 

 

IP 프로토콜의 한계 

 

-비연결성

 

패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송되는 한계가 있다

 

-비신뢰성

 

패킷이 소실되거나 , 

순서대로 도착하지 않을 수도 있고 ,

그 상태를 알 수도 없다 .

 

보통 큰 용량의 데이터의 경우 한번에 보낼 수가 없기 떄문에  대략 1500바이트로 끊어서 전달하게 되는데 , 나눠진 패킷들이 인터넷 망에서 서로 다른 노드를 통해서 전달될 수도 있기 때문에 순서에 맞지 않게 전달될 수도 있다. 

 

-프로그램 구분 불가 

 

  같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러개라면 구분할 방법이 없다 .  

 

 

위와 같은 IP의 문제점을 해결하기 위해  IP와 TCP 프로토콜을 함께 사용한다. 

 

 

TCP

 

TCP의 특징

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

 

1. 연결지향 

 

 

TCP 3 way handshake (가상 연결)을 통해  클라이언트와 서버의 연결 상태를 확인하고 전송한다 .

 

 

-TCP 3 way handshake (가상 연결)

 

총 4단계로 클라이언트와 서버의 연결상태를 확인하고 데이터를 전송하기 때문에 클라이언트도 서버를 믿을 수 있고 

서버도 클라이언트를 믿을 수 있게 된다 .

 

TCP 3 way handshake 그림 설명

위의 그림 처럼 TCP 3 way handshake을  통하면 

 

첫번쨰로 요청하는 쪽에서 먼저 SYN(접속요청) 이라는 메시지를 보내고 

 

연결이 되었다면 

 

응답하는 쪽은 요청한 쪽으로 ACK(요청 수락)메시지와 SYN(접속요청)을 보낸다 .

 

마지막으로 요청한쪽에서 응답하는 쪽의 접속요청을 OK하는 ACK 메시지를 보내고 데이터가 전송된다. 

 

3번 과정에서 ACK 메시지를 전송하며 데이터를 함께 전송할 수도 있다.  

 

TCP 3 way handshake는 물리적 연결이 아니라 논리적으로만 연결된 것이다 

 

 

2. 데이터 전달 보증

 

  클라이언트에서 서버로 데이터를 전송할 경우 전송에 성공했는지 여부를 서버는 응답해줘야한다 .

 

3. 순서 보장

 

예시)

클라이언트에서 패킷 1, 패킷2 ,패킷 3 순서로 전송한다 하였을때 각자 패킷은 다른 노드를 통해 전달 될 수 있고 

도착 순서가 다를 수도있다.  

 

TCP에는 순서정보가 저장되어 있어 만약 서버가 패킷 1, 패킷 3 , 패킷 2 순서로 받았을 경우 순서가 맞지 않는 부분 뒤로는 버리고 데이터를 다시 요청한다. (서버에서 최적화하기에 따라 방식은 다를 수 있다.) 

 

 

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

 

5. 현재는 대부분 TCP 사용

 

 

 

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

 

애플리케이션 계층 - HTTP , FTP 

 

전송계층 - TCP , UDP

 

인터넷 계층 - IP

 

네트워크 인터페이스 계층(LAN카드 , LAN드라이버)

 

위의 계층들을  실제 우리가 사용하는 상황으로 그려 보면 아래와 그림과 같다. 

 

 

 

프로토콜 계층

채팅프로그램에서 HELLO라는 메시지를 보내는 상황을 그림으로 나타낸 것이다 . 

 

첫번째 검은 태두리의 hello라는 메시지는 소켓 라이브러리를 통해 OS로 넘어간다. 

 

두번째로 OS에서는 해당 데이터에 TCP (파란색 태두리) 정보를 씌운다 

 

세번쨰로는 두번째의 데이터에 IP 정보를 씌우고 IP 패킷을 생성한다.  (주황색 태두리)

 

마지막으로 LAN 카드를 통해서 인터넷 망으로 전송되며 이때 Ethernet frame(LAN 카드의 MAC 주소와 같은 물리적인 주소)이 포함되어 전송된다

 

 

TCP/IP 패킷의 구조 

 

위의 IP 구조에서 살펴 봤듯이 IP만 사용해서는 전송에 한계가 있기 떄문에  TCP와 함께 사용하며 

TCP에는 출발지 PORT, 목적지 PORT  전송 제어 , 순서 , 검증 정보 등 ..  이 들어있다. 

TCP/IP 패킷 구조

 

UDP 

 

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

 

UDP 특징

 

- 하얀 도화지에 비유된다 (기능이 거의 없다) 

- IP와 거의 같고 , PORT , 검증정보 정도만 가지고 있다 . 

- 이미 짜여져있는 TCP에 비해 ,   애플리케이션 레벨에서 최적화 할 수 있는 여지가 있기 떄문에 최근에 

각광 받고있다 한다. HTTP3부터 UDP 프로토콜을 채택한다고 한다. 

 

 

 

반응형