그저 내가 되었고

🗺️네트워크:: TCP/IP(Transmission Control Protocol/Internet Protocol) 이해하기 본문

개발/Network

🗺️네트워크:: TCP/IP(Transmission Control Protocol/Internet Protocol) 이해하기

hyuunii 2022. 12. 12. 14:10

OSI 7 Layer와 더불어 개발자, 엔지니어를 가리지 않고 신입사원 면접에서 단골 소재로 등장한다는 TCP/IP.

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

 

 

빠르게 위키에서 발췌한 개념 정의부터::

인터넷 프로토콜 스위트(영어: Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.

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

- 출처 : 위키백과 -

음~ 뭔 말인지 전혀 모르겠어~~~~ 밑에서 천천히 알아봅시다🧐


+) OSI(Open System Interconnection) 7계층

7계층 – 응용 계층(Application): 디핑 소스 비유를 확장하면 응용 계층은 가장 위에 있다. 사용자에게 보이는 부분이다. OSI 모형에서는 “최종 사용자에게 가장 가까운” 계층이다. 7층에서 작동하는 응용프로그램은 사용자와 직접적으로 상호작용한다. 구글 크롬(Google Chrome), 파이어폭스(Firefox), 사파리(Safari) 등 웹 브라우저와 스카이프(Skype), 아웃룩(Outlook), 오피스(Office) 등의 응용 프로그램이 대표적이다.

6계층 – 표현 계층(Presentation): 표현 계층은 응용 계층의 데이터 표현에서 독립적인 부분을 나타낸다. 일반적으로 응용프로그램 형식을 준비 또는 네트워크 형식으로 변환하거나 네트워크 형식을 응용프로그램 형식으로 변환하는 것을 나타낸다. 다시 말해 이 계층은 응용프로그램이나 네트워크를 위해 데이터를 “표현”하는 것이다. 대표적인 예로는 데이터를 안전하게 전송하기 위해 암호화, 복호화하는 것인데, 이 작업이 바로 6계층에서 처리된다.

5계층 – 세션 계층(Session): 2대의 기기, 컴퓨터 또는 서버 간에 “대화”가 필요하면 세션(session)을 만들어야 하는데 이 작업이 여기서 처리된다. 이 계층에는 설정, 조율(예: 시스템의 응답 대기 기간), 세션 마지막에 응용프로그램 간의 종료 등의 기능이 필요하다.

4계층 – 전송 계층(Transport): 전송 계층은 최종 시스템 및 호스트 간의 데이터 전송 조율을 담당한다. 보낼 데이터의 용량과 속도, 목적지 등을 처리한다. 전송 계층의 예 중에서 가장 잘 알려진 것이 전송 제어 프로토콜(TCP)이다. TCP는 인터넷 프로토콜(IP) 위에 구축되는데 흔히 TCP/IP로 알려져 있다. 기기의 IP 주소가 여기서 작동한다.

3계층 – 네트워크 계층(Network): 네트워킹 전문가 대부분이 관심을 두고 좋아하는 라우터 기능 대부분이 여기 네트워크 계층에 자리잡는다. 가장 기본적으로 볼 때 이 계층은 다른 여러 라우터를 통한 라우팅을 비롯한 패킷 전달을 담당한다. 보스턴에 있는 컴퓨터가 캘리포니아에 있는 서버에 연결하려고 할 때 그 경로는 수백 만 가지다. 이 계층의 라우터가 이 작업을 효율적으로 처리한다.

2계층 – 데이터 링크 계층(Data Link): 데이터 링크 계층은 (두 개의 직접 연결된 노드 사이의) 노드 간 데이터 전송을 제공하며 물리 계층의 오류 수정도 처리한다. 여기에는 2개의 부계층도 존재한다. 하나는 매체 접근 제어(MAC) 계층이고 다른 하나는 논리적 연결 제어(LLC) 계층이다. 네트워킹 세계에서 대부분 스위치는 2계층에서 작동한다.

1계층 – 물리 계층(Physical): OSI 디핑 소스의 밑바닥에는 물리 계층이 있다. 시스템의 전기적, 물리적 표현을 나타낸다. 케이블 종류, (802.11 무선 시스템에서와 같은) 무선 주파수 링크는 물론 핀 배치, 전압, 물리 요건 등이 포함된다. 네트워킹 문제가 발생하면 많은 네트워크 전문가가 물리 계층으로 바로 가서 모든 케이블이 제대로 연결돼 있는지, 라우터나 스위치 또는 컴퓨터에서 전원 플러그가 빠지지 않았는지 확인한다.

 


TCP/IP

TCP/IP 개념을 이해하기 위해서는 통신의 역사를 어느정도 더듬어봐야한다.

 

서킷 통신(Circuit Switching)

서로 간 연결이 이루어지면 연결이 끊어질 때까지 해당 회선을 온전히 독점하며 사용하는 통신. 이 통신 방식은 통신을 원하는 양 쪽이 1:1로 연결되어야 함. 처음부터 양쪽이 연결되어 있거나 중간에 교환소를 거쳐서 연결이 될 것.

서킷통신 예제

 

 

일단 연결이 된 상태에서는 해당 회선을 완전히 점유한다. 다른 쪽에서 연결을 하고 싶으면 연결이 이미 연결된 곳이 끊어지기 전까지 기다려야 하는 것.

회선의 연결을 독점하는 서킷통신

 

 

- 냉전시대 미국의 고민: 냉전시대 미소 양국은 핵무기를 포함하여 치명적인 무기를 경쟁적으로 도입하였고, 전 세계는 서로의 위협에 늘 긴장된 상태였음. 공격을 위한 무기와 함께, 공격당했을 때 대비책도 중요한 법. 만일 본토가 핵공격을 받았을 때 통신망이 붕괴되어 아무것도 할 수 없는 상태가 된다면 어떻게 할 것인가도 미국의 고민 중 하나였다. 당시 (서킷) 통신 방식은 이러한 회선 단절에 취약했다. 회선이 끊어지면 다시 연결을 해야 하고, 누군가 선을 사용중이면 기다려야 했다. 긴급한 상황에서 효율적인 통신 방법은 분명히 아닐 것.

 

그러면 어떻게 연결해야 할까?

망을 여러 개 만들면 일부 선이 끊어지더라도 다시 연결할 수는 있을 것. 하지만 중간에 연결이 끊어지면 처음부터 다시 연결을 해야 하고, 가능한 망(멀쩡히 살아있고 누군가 사용하지 않는 회선)을 찾아 다시 연결하는 것이 효율적인 방식은 아니었다.

여러개의 노드로 망을 다중화 시켜도 문제는 여전히 존재.

 

 

다중망 자체만으로는 무엇인가 부족했다. 회선이 사용 중일 때 마냥 기다리지 않아도 되는 방법은 없을까? 선이 끊어지더라도 처음부터 연결하여 다시 통신을 하는 것보다 더 좋은 방법은 없을까?

 

 

패킷 통신(Packet Switching)

위의 문제를 해결하기 위하여 내용을 작게 잘라서 보내는 방법을 생각해냈다. 잘게 잘라진 조각들은 각각 목적지를 향하여 가장 효율적인 방법으로 이동한다. 목적지를 향하여 가능한 크고 빠른 길로 달리되, 그 길이 복잡하다면 좀 더 돌아가더라도 우회도로를 찾아가는 것과 비슷한 원리.

패킷통신 예제

 

 

내용을 잘게 나눠 보내면 뒤섞이거나 빠진 내용이 생길 수도 있다. 앞의 내용보다 뒤의 내용이 먼저 전달되어 순서가 뒤죽박죽이 되어버릴지도 모른다. 하지만 이건 간단히 해결할 수 있다. 목적지에서 점검을 해서 순서대로 정렬을 하고, 빠지거나 잘못된 게 있으면 그것만 다시 받아 합치면 되니까.

패킷 통신 완료 후 데이터 점검

 

 

이제 동시에 여러 곳에서 통신을 하더라도 문제가 없어졌다. 중간에 내용이 끊어지거나 사라지더라도 그 부분만 다시 요청해서 받으면 된다. 하나의 회선에서도 여러 명이 동시에 통신을 할 수도 있다.

이러한 연결 방식을 패킷통신이라고 한다.

 

 

TCP/IP

개념 이해

오늘날 인터넷 통신의 대부분은 패킷통신을 기본으로 하고 있다. TCP/IP는 이러한 패킷 통신을 위한 인터넷의 규약이다(패킷 통신 규약 중 하나인 TCP/IP)

- IP: 데이터의 조각들을 최대한 빨리 목적지로 보내는 역할을 한다. 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는 데 집중한다.

- TCP: IP보다 느리지만 꼼꼼한 방식을 사용한다. 도착한 조각을 점검하여 줄을 세우고 망가졌거나 빠진 조각을 다시 요청한다.

 것을 묶어 TCP/IP라고 부르는 것.

위와 같이 데이터 전송의 과정에서 TCP와 IP 각각 담당하는 작업이 있지만, 결국에는 두 방식의 조합으로 인터넷 데이터 통신을 한다는 같은 결과를 목표로 하기 때문에 한 명칭으로 불린다.

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

 

 

다시 앞에 발췌한 위키백과로 돌아가면.

 

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다.

프로토콜은 이후 연재에서 간간히 설명할 기회가 있겠지만 일단 사전 그대로 규약 정도로 이해하기. 인터넷 통신을 하기 위한 표준이자 약속인 것. '패킷 통신 방식의 인터넷 프로토콜인 IP'라는 대목에서 패킷 통신은 위 설명 참조.

 

IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.

TCP/IP는 두 개의 프로토콜입니다. 그중 IP는 복잡한 네트워크 망을 통하여 가장 효율적은 방법으로 데이터의 작은 조각들을 되도록 빨리 보내는 일을 한다. TCP는 데이터를 잘게 잘라 보내면서 순서가 맞지 않거나 중간에 빠진 부분을 점검하여 다시 요청하는 일을 담당한다.

 

HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.

HTTP(하이퍼텍스트 전송 규약, Hyper Text Transfer Protocol. 인터넷에서 데이터를 주고받을 수 있는 프로토콜) FTP(파일 전송 프로토콜, File Transfer Protocol. TCP/IP 네트워크 상에서 컴퓨터들이 웹이나 여러 데이터들을 교환하기 위한 통신 규약)

 

 

TCP vs IP

- TCP: 전송 제어 프로토콜(Transmission Control Protocol.) 한 기기에서 다른 기기로 데이터 전송하는 것을 담당.

- IP: 인터넷 프로토콜(Internet Protocol.) 최대한 빨리 데이터의 조각을 대상 IP 주소로 보내는 역할을 담당.

 

 

REFERENCE
- https://brunch.co.kr/@wangho/6#comment
- 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
- https://nordvpn.com/ko/blog/tcp-ip-protocol/