비망노트 2022. 9. 4. 18:32

📌 TCP/IP란 ?

이전 인터넷의 작동원리에서 인터넷이란 정보를 담고있는 각 컴퓨터들을 TCP/IP 라는 통신 프로토콜을 이용
서로 정보를 주고받도록 한 컴퓨터 네트워크를 뜻한다고 설명했다.

다시말해 TCP/IP란 컴퓨터 통신을 위해 사용되는 프로토콜인것이다.


📌 TCP/IP

인터넷 프로토콜 슈트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이
서로 정보를 주고받는 데 사용되는 통신규약(프로토콜)의 모음이다.
인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 사용되므로 TCP/IP 프로토콜슈트라고도 부른다.

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


즉 TCP/IP는 하나의 프로토콜이 아닌 TCP 와 IP 를 합쳐부르는 말이며
TCP/IP를 사용하겠다 함은 IP주소체계를 따르고 IP Routing을 이용해 목적지에 도달하며
TCP의 특성을 활용해 송신자와 수신자의 논리적연결을 생성해 신뢰성을 유지할 수 있도록 하겠다는것을 의미한다.

다시말해, TCP/IP를 말한다는것은 송신자가 수신자에게 IP주소를 사용해 데이터를 전달하고 그 데이터가 제대로갔는지,
너무 빠르지는 않는지, 제대로받았다고 수신확인은 되는지에대한 이야기를 하는것이다.


또한 TCP/IP는 OSI 7 Layer 중에서 Layer 3, Layer 4를 다루는 프로토콜이다

🚩 전송계층(Transport Layer, Layer 4)
- 송신자와 수신자의 논리적 연결(Connection)을 담당하는 부분으로 신뢰성있는 연결을 유지하도록 도와준다.
즉 Endpoint(사용자) 간의 연결을 생성하고 데이터를 얼마나 보냈는지, 얼마나 받았는지,
제대로 받았는지를 확인하며 TCP와 UDP가 대표적이다.


🚩 네트워크계층(Network Layer, Layer 3)
- IP(Internet Protocol)이 활용되는 부분으로, 한 Endpoint가 다른 Endpoint로 가고자 할 경우,
경로와 목적지를 찾아준다. 이를 Routing이라고 하며
대역이 다른 IP들이 목적지를 향해 제대로 찾아갈 수 있도록 돕는 역할을 한다.


인터넷에서 무언가를 다운로드할 때 중간에 끊기거나 빠지는부분없이 완벽히 받을 수 있는 이유 또한 이러한 TCP의 특성 덕분이다.
그렇기때문에 위에서 언급한것처럼 HTTP, HTTPS, FTP, SMTP등과 같이
데이터를 안정적으로 모두보내야하는 것을 중요시하는 프로토콜들의 기반이되는것이다.

다른말로 TCP를 기반으로 하는 프로토콜들은 TCP의 3 way handshake를 거친 후
각자 프로토콜(Layer 7)에 기반한 교환과정을 실시한다는 뜻이다

HTTPS의 통신과정


위의 이미지는 TCP 기반의 프로콜인 HTTPS의 "SSL handshake"를 도식화한것이다.
TCP는 Layer4이고 HTTPS는 Layer7이며 파란색상자는 TCP의 "3-way handshake"이고
노란색상자는 HTTPS의 "SSL handshake"이다.
HTTPS는 TCP 기반의 프로토콜이기때문에 SSL handshake를 하기에 앞서 3-way handshake를 실시하는것을 알 수 있다.


📌 TCP의 개요

전송 제어 프로토콜(Transmission Control Protocol, TCP)는 인터넷 프로토콜 슈트(IP)의 핵심 프로토콜중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리불린다.
TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램간의 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할수 있게한다.

TCP는 전송계층에 위치한다.
네트워크의 정보전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심프로토콜의 하나이다.
TCP는 웹브라우저들이 월드 와이드 웹에서 서버에 연결할 때 사용되며, 이메일 전송이나 파일전송에도 사용된다.


TCP는 OSI 7계층 중 4계층에 해당한다.
IP가 패킷들의 관계에 대한 이해 없이 그저 목적지를 제대로 찾아가는것에 중점을 둔다면
TCP는 통신하고자하는 양쪽단말(Endpoint)가 통신할준비가 되었는지 데이터가 제대로갔는가, 훼손은 없는가, 수신자가 모두 받았는가등을 점검한다.
이러한정보는 TCP Header에 담겨있으며 신뢰성 보장과 흐름제어 ,혼잡제어에 관여할 수 있는 요소들도 포함되어있다.
또한 IP Header와 TCP Header를 제외한 TCP가 실을 수 있는 데이터크기를 세그먼트(Segment)라고 부른다.


TCP는 IP의 정보뿐아니라 Port를 이용해 연결을한다.
한쪽단말(Endpoint)에 도착한 데이터가 어느 입구(Port)로 들어가야 하는지 알아야 연결을 시도할 수 있기때문이다.
위 이미지를 보면 Source port와 Destination port를 볼 수 있다.
양쪽단말이 HTTP로 이루어진 문서를 주고받고자 한다면 알맞는 port에 연결이 되어야하는데
이때 신뢰성있는 연결을 맺고 데이터를 전송하기위해 TCP는 3-way handshake를 실행한다.

3-way handshake는 간단히말해 연결하고자 하는 두 장치간의 논리적 접속을 성립하기위해 사용하는 연결 확인 방식으로,
3번의 확인과정을 거친다고하여 3-way handshake라고 부른다.

3-way handshake & 4-way handshake



📌 TCP의 특징

TCP의 어떤 특징이 신뢰성유지를 성립시키는지 알아보자.

🚩 흐름제어

수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신 측의 속도가 빠를 경우 문제가 생긴다.
수신 측에서 제한된 저장 용량을 초과한 이후에 도착하는 패킷은 손실될 수 있으며, 만약 손실된다면 불필요한 추가 패킷 전송이 발생하게 된다.

흐름 제어는 위와 같이 송신 측과 수신 측의 TCP 버퍼 크기 차이로 인해 생기는 데이터 처리 속도 차이를 해결하기 위한 기법이다.

TCP 버퍼 : 송신 측은 버퍼에 TCP 세그먼트를 보관한 후 순차적으로 전송하고,
수신 측은 도착한 TCP 세그먼트를 애플리케이션이 읽을 때까지 버퍼에 보관한다.

🚩 혼잡제어

데이터의 양이 라우터가 처리할 수 있는 양을 초과하면 초과된 데이터는 라우터가 처리하지 못한다.
이때 송신 측에서는 라우터가 처리하지 못한 데이터를 손실 데이터로 간주하고 계속 재전송하여 네트워크를 혼잡하게 한다.
이런 상황은 송신 측의 전송 속도를 적절히 조절하여 예방할 수 있는데, 이것을 혼잡 제어라고 한다.

정리하자면, 흐름 제어는 송 수신 측 사이의 패킷 수를 제어하는 기능이라 할 수 있으며,
혼잡 제어는 네트워크 내의 패킷 수를 조절하여 네트워크의 오버플로우를 방지하는 기능이다.




-출처
https://aws-hyoh.tistory.com/entry/
https://ko.wikipedia.org/wiki/
https://seongonion.tistory.com/74