본문 바로가기

[네트워크] TCP/IP 이해하기

들어가며

개발자가 되기 위해서는 정말 다양한 지식을 알아야 합니다. 그중에서도, 네트워크는 필수적으로 알아야 하는 분야라고 생각했지만, 막상 네트워크를 제대로 공부한 적은 드물었습니다. 이번 기회에 네트워크에 대해 조금씩이라도 공부하면서 개발자로서의 기본을 쌓기 위해 노력하고 싶습니다. 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

출처 : 모든 개발자를 위한 HTTP - 김영한 / 인프런

 

IP (Internet Protocol)

TCP/IP란 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약을 말합니다. TCP와 IP 두 가지의 프로토콜로 이루어져 있습니다. 그중에서도 먼저 IP에 대해 살펴보겠습니다.

 

컴퓨터 간 복잡한 인터넷 망을 통해 메시지를 보내기 위해서는 정해진 규칙이 필요합니다. 클라이언트와 서버는 각각 IP 주소를 가지고 지정한 IP 주소에 패킷(출발지 IP, 목적지 IP와 전송 데이터 등으로 구성된 통신 단위) 단위로 데이터를 전송합니다. 전송된 데이터는 인터넷 망 내의 노드를 거쳐 목적지에 도달하게 됩니다. 

 

그러나 IP 프로토콜에는 몇 가지 한계가 있습니다. 먼저 클라이언트에서는 대상 서버가 패킷을 받을 수 있는 상태인지 확인할 수 없습니다. 따라서 받을 대상이 없거나 서비스가 불가능해도(연결이 되지 않은 상태) 패킷을 전송합니다(비연결성). 또한, 인터넷 망 내 노드에 문제가 생기는 경우 패킷이 안전하게 도달하지 못하거나 전송 순서가 바뀔 수 있습니다(비신뢰성). 게다가 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 IP만으로는 이를 구분할 수 없다는 단점이 있습니다. 이런 문제를 해결해주는 것이 TCP입니다. 본격적으로 TCP를 알아보기 전, 인터넷 프로토콜 스택의 4 계층을 먼저 살펴보겠습니다.

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

프로토콜 계층

인터넷 프로토콜 스택의 4계층으로 애플리케이션, 전송, 인터넷, 네트워크 인터페이스 계층을 살펴볼 수 있습니다.

 

애플리케이션 계층은 프로그램(브라우저)이 데이터를 처음으로 받는 곳입니다. HTTP, SMTP 등의 프로토콜을 가집니다.

 

전송 계층의 경우 TCP가 있는 계층입니다. 포트를 통하여 애플리케이션 계층이 TCP에게 데이터를 전송합니다. 각각의 포트에 프로토콜을 지정할 수 있습니다. 예를 들어, HTTP는 80이라는 포트를 사용합니다. 이로써, TCP는 어디에서 데이터가 오는지를 정확히 알 수 있습니다. 포트를 통해 받은 데이터들은 패킷이라는 작은 단위로 쪼개집니다. 이 패킷들은 제각각 가장 빨리 전송될 수 있는 인터넷 루트를 찾아 떠납니다. 각각의 패킷들은 TCP header에 어떤 순서로 재조합할지에 관한 정보를 가집니다.  

 

인터넷 계층의 경우 패킷들이 인터넷 레이어에 push됩니다. IP를 사용하여 데이터의 원천지(origin)와 목적지(destination)에 관한 정보를 첨부합니다.

 

마지막, 네트워크 계층의 경우 패킷들은 네트워크 레이어로 전송됩니다. 알맞은 하드웨어로 데이터가 전달되도록 MAC 주소를 핸들링하는 것뿐 아니라, 데이터 패킷을 전기신호로 변환하여 선로를 통하여 전달할 수 있게 준비해줍니다. 

 

 

 

출처 : HTTP 웹 기본 지식 (1)

 

 

정리해보면 애플리케이션(브라우저, 네트워크 게임, 채팅 플그램 등)에서 서버에 보낼 데이터를 입력하면 Socket 라이브러리를 통해 운영체제에 메시지를 전달합니다. TCP 정보를 추가하고 IP 패킷을 생성하며, 이 TCP/IP 패킷이 인터넷 망을 통해 서버로 전송됩니다. 그럼 여기서 TCP는 무엇인지 이에 대해 알아보겠습니다.

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

TCP와 UDP

TCP (Transmission Control Protocol)의 특징은 다음과 같습니다.

 

 

 

 

 

 

 

출처 : 모든 개발자를 위한 HTTP - 김영한 / 인프런

 

 

TCP - 연결 지향 (TCP 3 Way Handshake)

가상 연결 후에 메시지를 보냅니다. 클라이언트의 접속 요청을 (SYN) 받으면 서버는 클라이언트에 요청 수락 메시지와 (ACK) 접속 요청을 (SYN) 회신합니다. 응답을 받은 클라이언트 역시 요청 수락 메시지를 (ACK) 보내면 성공적으로 연결됩니다. 세 단계를 거쳐 연결하기 때문에 3 Way Handshake라고 부릅니다. 대상이 서비스 가능한 상태임을 확인한 후에 프로세스를 진행하므로 무의미한 데이터 전송을 방지할 수 있습니다. (비연결성 해결)

 

 

TCP - 비신뢰성 해결

데이터 전송 실패 시 클라이언트에서 이를 확인할 수 있으며, TCP/IP 패킷에 담긴 순서 정보와 다른 순서로 데이터 수신 시 전송을 재요청하므로, 순서를 보장할 수 있습니다. (비신뢰성 해결)

 

 

그럼 UDP (User Datagram Protocol)의 특징에 대해 살펴보겠습니다.

 

 

 

 

 

 

출처 : https://www.joinc.co.kr/w/Site/TCP_IP/IntroUDP

 

UDP

UDP는 IP에 PORT와 Checksum만 추가된 프로토콜입니다. TCP는 3 Way Handshake 과정으로 인해 전송속도와 전송량 최적화가 어려운데 반해 UDP를 이용하면 애플리케이션에서 추가 작업을 통해 최적화가 가능합니다. 최근 UDP가 각광받는 이유는 HTTP3가 UDP 프로토콜을 사용하기 때문입니다. 

 

 

Checksum이란?
중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법입니다.

 

 

 

 

PORT

TCP에서 3 Way Handshake를 통해 연결된 상태를 확인 후 데이터를 전달하는데, 이 때 IP만 알고 있으면, IP에서도 어디서 필요한 패킷인지 알 수 없습니다. 이때 PORT정보를 통해 데이터를 어떤 애플리케이션에 전달할지를 구분합니다. 즉, 한 대의 클라이언트 PC가 여러 대의 서버와 통신하고 있을 때, TCP/IP 패킷에 담긴 PORT에 따라 동일 IP 내의 프로세스를 구분할 수 있습니다. PORT는 0~65535까지 할당이 가능하지만, 0~1023 포트까지는 잘 알려진 포트이므로 사용하지 않는 것이 좋습니다.

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

마치며

네트워크에 대해 조금씩이라도 지식을 쌓아가고 싶습니다. 기본을 꾸준히 쌓을 수 있는 개발자가 되겠습니다. 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

출처

 

 

 

 

TCP/IP 쉽게 이해하기

IT 분야에서 실무를 담당하시는 분들뿐만 아니라 학생, IT 쪽에 조금이라도 관심이 있는 분들이라면 TCP/IP에 대해 들어보셨을 겁니다. 저 또한 학부시절에 TCP/IP에 대해서 여러 번 들어보았는데요.

aws-hyoh.tistory.com

 

TCP/IP란

여러가지 web protocols중에 비교적 가장 최근에 발명된 통신규약이다.시초는 (역시) 미국이며, 지역네트워크(LAN)과 광역네트워크(WAN)간의 원활한 통신을 위하여 만들어 졌다.email, FTP등 우리에게 친

velog.io

 

HTTP 웹 기본 지식 (1)

IP (Internet Protocol)

medium.com

 

01. HTTP 웹 기본 지식 - 인터넷 네트워크

www.inflearn.com/course/http-웹-네트워크# 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자

aejeong.com

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com