2022. 3. 5. 01:02ㆍ컴퓨터 공학/네트워크
앞선 IP 관련 게시글을 보고 온 분은 IP만 가지고는 원활한 인터넷 통신이 어렵다는 사실을 인지하고 있을 것이다.
그리고 그러한 문제들을 해결하기 위해서 TCP/UDP 가 존재한다.
TCP/UDP를 이해하기 위해서는 먼저 인터넷 프로토콜 스택 4계층(TCp/IP 4계층)에 대한 이해도가 필요하다.
이렇게 TCP/IP는 총 4개의 계층으로 이루어져있다.
가창 하단에 존재하는 1계층은 네트워크 액세스 계층, 2계층은 인터넷 계층, 3계층은 전송 계층, 4계층은 응용 계층이다.
액세스 계층은 OSI 7계층에서 물리적 계층과 데이터 링그 케층에 해당되며
LAN, 이더넷, wifi 등에 사용된다.
인터넷 계층은 OSI 7계층에서 네트워크 계층에 해당하며,
노드간의 IP 패킷을 전송하는 기능과 라우팅 기능을 담당한다.
주요 프로토콜은 IP이며, 현재는 IPv4, IPv6 2개의 버전으로 구현되어 있다.
전송계층은 OSI 7계층에서도 전송 계층에 해당하며,
네트워크 구성요소와 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공한다.
주요 프로토콜로는 TCP, UDP 등이 있다.
응용계층은 OSI 7계층에서 세션 계층, 표현 계층, 응용 계층에 해당한다.
TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다.
주요 TCP/IP 프로토콜로는 텔넷, FTP, SMTP, DNS 등이 있다.
그럼 TCP를 어떻게 이해하면 좋은가?
Internet Layer의 IP위에 TCP라는 친구를 올려서 IP를 보완해준다고 생각하면 간단하게 이해할 수 있다.
내가 친구한테 메시지를 전달한다고 생각해보자.
응용계층에서 메시지를 생성할 것이다. 생성되어지 메시지가 전송계층으로 넘어오면서 TCP 정보를 입게 된다.
그리고 TCP정보를 입은 메시지가 IP 패킷을 생성하고, TCP 데이터를 포함하여 네트워크 액세스 계층으로 넘어오면서 다른 서버에 전송되게 된다.
기존의 IP는 뭘 가지고 있었다고 했는가?
출발지의 IP, 목적지의 IP 등을 가지고 있었다.
그럼 TCP는 뭘 가지고 있을까?
바로 PORT라는 것을 가지고 있다!!
출발지의 port, 목적지의 port, 전송제어, 순서, 검증 정보 등을 가지고 있다.
TCP의 특징
TCP는 Transmission Control Protocol의 준말이다.
전송 제어 프로토콜. 이것이 TCP이다. 전송을 제어한다. 그럼 특징이 뭐가 있을까?
TCP는 연결지향적이다. 이를 TCP 3 way handshake를 통해서 달성한다.
TCP는 데이터 전달을 보증한다.
TCP는 순서를 보장한다.
그렇기 때문에 TCP는 신뢰할 수 있는 프로토콜이고, 현재는 대부분 TCP를 사용하고 있다.
3 way Handshake
세 방식의 악수? 이렇게 이해할 수 있겠다.
이 악수를 언제 하느냐, 클라이언트와 서버간의 연결 과정에서 시행된다.
가장 먼저 클라이언트가 서버에 syn 요청을 한다.
syn은 synchronize 로 동기화 정도가 되겠다. 접속 요청을 하는 것이다.
그러면 서버에서 syn과 ack을 클라이언트에게 전송한다.
ack은 acknowledge code로 요청 수락이다.
클라이언트에서 나 연결해도 되겠니? 물으면 서버가 그래 OK라고 대답하는 거라고 보면 된다.
그리고 다시 클라이언트가 ack을 서버에게 보내면서 두 서버간의 연결이 성사된다.
이후 데이터를 전송한다.
(현재는 많은 패치가 이루어져서 마지막 ack때 데이터를 같이 전송한다고 한다.)
여기서 주의할 점은 물리적 연결이 아니라는 것이다. 개념적으로 추상적으로 연결되었다라고 보는게 맞다.
물리적 연결은 50년대 영화에 보면 전화교환원이 코드를 물리적으로 옮겨서 연결시키는 것을 떠올리면 된다.
데이터 전달 보증
어떻게 TCP는 데이터 전달을 보증할까?
TCP는 데이터 손실을 방지하는 구조로 짜여져 있다.
수신 측에 TCP 세그먼트가 도착하면, 수신 측은 송신측에 도착을 알린다.
IP는 수신 측이 올바르게 수신을 하든지 상관하지 않았지만, TCP는 수신측이 올바르게 수신했는지를 알림으로써
데이터 전달을 보증하는 것이다.
순서 보장
TCP는 IP와 다르게 순서를 보장한다. 어떻게 순서를 보장할까?
바로 TCP 세그먼트에 시퀀스 번호를 붙이는 방식이 순서를 보장한다.
시퀀스 번호는 TCP 헤더에 기록되며, 이 헤더를 통해서 받은 수신측이 정보를 조립하여 사용한다.
'컴퓨터 공학 > 네트워크' 카테고리의 다른 글
(네트워크) gRPC로 가는길(1) / HTTP의 역사(1.0, 1.1, 2.0) (0) | 2023.02.26 |
---|---|
(네트워크) 간단한 TCP의 특징과 역사 (0) | 2022.05.02 |
(네트워크) UDP에 관한 짧은 지식 (0) | 2022.04.21 |
(네트워크) IP란 뭘까? (0) | 2022.03.03 |