웹개발

[Web] TCP/IP란?

이어니언 2021. 7. 13. 16:12

IP(Internet Protocol)

IP는 송신 호스트와 수신 호스트가 패킷을 보내 서로 정보를 주고 받는 인터넷 규약이다. 

IP address는 각 장치를 나타내는 고유의 주소를 말한다. 현재 IP주소는 IPv4/IPv6 두가지 체계를 사용하고 있다.

IPv4는 32bit의 값을 8bit씩 끊어 .으로 나누는 방식을 사용한다. 약 43억개의 숫자를 가질 수 있는데 최근 대부분이 사용되어 할당이 종료되었고, 반납된 IP 주소를 받거나, 미리 확보해놓은 곳의 IP 주소를 받아 사용할 수 있다.

IPv6는 4자리의 16진수 숫자 8개로 표기하고 :으로 나누는 방식을 사용한다. 아직 보급율이 1%도 되지 않지만 점차 사용율이 올라갈 것으로 생각된다. 

 

특징

1. 비신뢰성(unreliability)

 - 패킷이 제대로 전달되었는지 신경쓰지 않는다. 패킷이 없어질 수도 있고, 순서가 뒤죽박죽이 될 수 있다.

 

2. 비연결성(connectionlessness)

 - 패킷을 받을 대상이 없거나 연결이 안되어도 패킷 전송

 - 실제 주소에 받을 사람이 있는지 확인하지 않고 택배를 보내는 것과 유사

 

위의 단점을 보완하기 위해 TCP 프로토콜을 함께 사용한다.

 

TCP(Transmission Control Protocol)

전송 제어 프로토콜로 IP에  출발지 port, 도착지 port, 전송 제어, 순서 등의 정보를 담고 있다. 이렇게 header에 정보를 담아 TCP세그먼트를 만들고 IP 데이터그램으로 감싸져 정보를 주고 받는다.

IP와는 다르게 양방향 통신을 확인 후 전송을 하기 때문에 비신뢰성 문제를 해결하였고, 순서 등에 대한 정보를 담고 있기 때문에 비연결성 문제를 해결할 수 있다.

 

TCP 3way handshake

양방향 통신을 확인 하는 방법으로 3번의 전송을 통해 서로 연결이 되었다는 것을 확인한다.

A-B 간의 통신

1. A에서 SYN 을 보낸다.

2. SYN을 받은 B가 SYN + ACK을 A에게 재전송한다.

3. 마지막으로 SYN + ACK을 받은 A가 ACK을 B에게 다시 보내며 A-B가 연결되었다는 것을 서로 확인한다.

 

연결 확인을 하는데에만 3번의 데이터를 주고 받아야되기 때문에 시간이 소모된다.

이 통신 확인 시간을 줄이기 위해 A가 B에게 마지막으로 ACK을 보낼 때 데이터를 같이 담아 보내기도 한다.