Network - TCP / IP

한성봉·2021년 9월 1일
0

TCP/IP (Transmission Control Protocol/Internet Protocol)

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.
-위키백과-

TCP / IP 는 각각 OSI 7 Layer 중에서 Layer 3,4 즉 전송계층과,네트워크 계층을 다루는 프로토콜입니다.

TCP/IP 는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있습니다. IP는 패킷 전달 여부를 보증하기 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있습니다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해줍니다. 그렇기 때문에 TCP/IP는 하나의 프로토콜이 아닌 각자의 프로토콜을 합쳐 부르는 말입니다.

그렇기 때문에 TCP/IP를 사용하겠다는 말은 IP주소 쳬계를 따르며 TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 신되성을 유지할 수 있도록 하겠다는 것을 의미합니다.

쉽게 말해 TCP의 역할은 송신자가 수신자에게 IP주소를 사용하여 데이터를 전달하고 그 데이터가 제대로 갔는지, 너무 빠르지는 않는지, 제대로 받았다고 연락은 오는지에 대한 이야기를 하고 있는 것입니다.

IP가 패킷들의 관계를 신경쓰지 않고 목적지를 제대로 찾아가는 것에 중점을 둔 프로토콜이라면 TCP는 통신하고자 하는 양쪽 단말에 통신할 준비가 되었는지, 데이터가 제대로 전송되었는지, 변질이나 누락은 없었는지 등을 점검합니다. 이런 정보는 TCP header에 담겨 있습니다. 전송계층 header TCP header 정보를 담으면 그것을 세그먼트(Segment)라고 부릅니다. OSI 7 계층 모델에서 각 계층에서 필요한 정보를 헤더에 담는 행위를 캡슐화라고 합니다. 캡슐화에 대한 부분은 OSI 7 계층 주제를 다룰 때 자세히 이야기 해보도록 하겠습니다.
TCP header에는 SYN,ACK,FIN,RST,Source port, Destination port,Sequence Number, Window size, Checksum 과 같은 신뢰성 보장과 흐름제어,혼잡제어에 관여할 수 있는 요소들이 포함되어 있습니다.

TCP header의 구조 -위키백과-

TCP는 IP주소 뿐 아니라 Port를 이용하여 연결합니다. TCP header에 보면 Source port, Destination port가 존재하는데 정해진 port로 연결합니다. 예를 들어 HTTP로 이루어진 문서로 데이터를 주고받을 때는 80번 Port를 이용해야한다는 것 처럼 정해진 프로토콜에 따른 Port를 이용하여 연결합니다.

TCP header

3-way handshake

3-way handshake는 쉽게 말해 데이터를 본격적으로 전달하기 전 송신자와 수신자간의 연결요청과 응답을 하는 것을 말합니다.

1. 연결 확립 요청
데이터를 주고 받는 통신을 하기 위해서는 컴퓨터 2대의 허가를 받아야 하므로, 먼저 송신자 컴퓨터에서 수신자 컴퓨터로 연결 확립 허가를 받기 위한 요청(SYN)을 보냅니다.
2. 연결 확립 응답 + 연결 확립 요청
수신자는 송신자가 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보냅니다. 동시에 수신자도 송신자에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보냅니다.
3. 연결 확립 응답
수신자의 요청을 받은 송신자는 수신자로 허가한다는 응답으로 연결 확립 응답(ACK)를 보냅니다.

여기서 필요한 정보는 TCP header에 담긴 SYN와 ACK입니다. SYN는 연결 요청이고 ACK는 확인 응답이라고 보시면 됩니다.

이 처럼 데이터를 보내기 전 연결 요청과 응답을 3번 하는 것을 3-way handshake라고 합니다.

이후 연결 종료를 위해 FIN을 이용한다고 정도만 알고 있으면 될 것같습니다.

이처럼 TCP는 신뢰성과 정확성을 중요하게 여기는 프로토콜이라 문제가 없는지 많은 절차를 통해 확인을 합니다. 이 절차가 복잡하기도 합니다. 그렇기 때문에 많이 비교가 되는 것이 비연결형 통신 프로토콜인 UDP와 비교됩니다. TCP와 UDP의 차이는 자세하게 블로깅하도록 하겠습니다.

참고자료 : https://aws-hyoh.tistory.com/entry/TCPIP-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
참고자료 : 모두의 네트워크 <Lesson24, TCP의 구조 편>

0개의 댓글