TCP/IP 관련 내용 정리

The Beginner Developer
8 min readMay 17, 2020

--

TCP/IP에 관한 내용들은 구글링 하면 천지에 널렸다. 하지만 그 천지에 깔린 내용들을 난 잘 모른다… 그래서 정리한다.

오늘 우리가 사용중인 인터넷은 TCP/IP라 불리는 프로토콜(통신규약)을 이용하고 있다. TCP/IP를 통해 우리는 내 컴퓨터에서 다른 컴퓨터로 인터넷을 통해 패킷이라는 데이터를 주고 받는다.

TCP

TCP는 전송 제어 프로토콜(Transmission Control Protocol)의 약자이다.
간단하게 말하면 데이터 전달 규칙이다. 나의 컴퓨터와 타인의 컴퓨터는 TCP라는 동일한 규칙 안에서 데이터를 주고 받는다.

이때 데이터는 한번에 훅 가지 않는다. 예를 들면 만약 A라는 데이터를 보낸다면. A-1, A-2, … A-10 이런식으로 잘게 나누어 데이터를 전송한다. 이 잘게 나누어진 데이터를 패킷(Packet)이라고 한다.

우리가 파리바게트 케익을 조각 낼때 고민하듯이(그냥 숟가락으로 퍼먹어…) 패킷도 나눌때 크게 나눌지 작게 나눌지에 대한 고민이 필요하다.

MTU(Maximum Transmission Unit)는 패킷의 최대 크기를 나타내는 수치다.만약 전송할 데이터가 MTU보다 값이 크다면 패킷으로 나누어서 보내지게 된다.

MTU 값이 크면 패킷의 수가 그만큼 줄어들기 때문에한번에 많은 데이터를 보낼 수 있으므로 대량의 데이터를 처리할때 이점이 있다. 하지만 패킷이 훼손되어 오는 경우에는 다시 큰 패킷을 요청해야하는데, 패킷이 큰 만큼 오는데 오래 걸리게 된다.

MTU값이 작으면 패킷의 수가 많아지는데, 패킷이 가지고 있는 공통 header (TCP Header & IP Header)들을 처리하는 양이 늘어나므로 overhead가 늘어나는 문제가 있다.

패킷은 하나의 루트로만 전송되지 않는다. 여러 루트를 통해서 전송이 가능한데 여러 루트 마다 도착시간이 달라서 순서가 보장되지 않는다. (네이버 지도에서 출발지와 도착지를 누르면 여러 경로를 알려주는데 각 경로들마다 도착예정시간이 다른 그런 느낌????)

TCP Header 구조

데이터를 받는쪽은 A-2,A-10,…, A-1 데이터를 순서에 맞게 A-1,A-2,…,A-10으로 재조립 한다. 순서에맞게 재조립이 가능한 이유는, TCP 방식으로 데이터 전송시 Header가 붙게되는데 Header에 순서에 관한 정보(Sequence Number)가 있기 때문이다.

TCP헤더에 설명을 약간 붙이자면
Source Port는 송신측의 port 번호를 나타낸다.
Destination Port는 수신측의 port번호를 나타낸다.
CheckSum은 패킷의 훼손여부를 체크하는 역할을 한다.
SYN은 통신을 하는 양측의 Sequence Number를 동기화 하기위해 사용된다.
ACK는 데이터를 잘 받았다는 응답을 전달하기 위해 사용되며 Sequence Number에 + 1을 붙이는 방법을 이용한다.

IP

IP는 인터넷 상에서 사용되는 주소이다. (너 ip 추적한다.)
현실에서 물건을 보낼때 보내는곳 주소, 받는곳 주소가 있듯이, 컴퓨터도 네트워크상에서 패킷을 주고 받기위해 주소가 필요하다.

흔히 볼 수 있는 ***.***.***.*** 방식이 IPv4 방식이고 요즘은 스마트폰,태블릿, IOT등 인터넷을 사용하는 기기들이 너무 많아서 IPv4방식의 아이피가 고갈되어 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 처럼 IPv6 방식으로 전환 되고 있다.

IPv4 Header

Source Address는 출발지 IP주소를 나타낸다. Destination Address는 도착지 IP주소를 나타낸다. TCP 헤더의 Source port, Destination port랑 같이 사용하여 송신자와 수신자를 식별 할 수 있다.
Type of Service의 값에따라 전송 경로와 방식이 조금씩 달라진다.

위의 내용을 요약하면 우리가 사용하는 인터넷은 TCP/IP기반으로 작동하고 있으며, 데이터가 전송될때 패킷이라는 작은 단위로 나뉘어 전송되어, 송신시 덧붙여 발송되는 header 정보를 통해 어디서 온 데이터인지 누가 받을 데이터인지를 알 수 있고 여러 경로를 통해 발송된 패킷들은 수신측에서 재조립되어 송신측이 전송한 데이터를 받을 수 있다는 것이다.

OSI 7계층

이 계층구조가 현실에서는 어떻게 쓰이는(?)건지 이번에 알아보자.

OSI 7계층

OSI 7계층을 우선 알아보자.

OSI 7계층은 네트워크 표준 모델이다. 네트워크 장치를 만들때 이 계층의 구조를 이용한다고 한다.

이런 표준이 생긴 이유는 과거에는 서로 자기 회사 제품 내에서만 통신이 가능했기 때문에(A 회사 제품은 A회사 제품끼리만 통신이 가능했다.) 국제표준을 만들어서 여러회사의 제품들 간의 넓은 호환성을 위해 만든 것이다.

이 계층은 각 계층이 독립적으로 이루어져 있다. 컴퓨터 부품 처럼 각 부품이 독립적으로 장착, 분해, 수리, 교체가 가능한 그런 느낌이다.

하드디스크가 고장나면 하드디스크만 바꾸지, 본체를 통째로 바꾸지는 않듯이(물론 이건 좋은 기회다. ???), 해당 계층에서 문제가 발생하면 해당 계층에 관련된 부분만 조치를 할 수가 있다. 하지만 하드디스크 고장나면 컴퓨터 못쓰듯이 하나의 계층에서 잘못되면 네트워크 통신을 할 수가 없다. 개개인은 독립적이지만 서로 영향을 안주는건 아니다.

그림처럼 데이터 전송시 전송측에서느 계층을 지날때 마다 각 계층에서 Header가 붙게되고 수신측은 역순으로 헤더를 분석하게된다.

OSI 7 계층별 역할을 간단하게 정리해 보면

  • 1계층, 물리층(Physical Layer) : 전기적, 기계적인 물리적 연결을 담당함. 순수 데이터 전달 역할만 함.
  • 2계층, 데이터링크 계층(Data Link Layer) : 두 지점간의 신뢰성있는 전송을 보장. Mac주소(각 기기마다 가지고 있는 고유 주소)를 이용해 두 지점을 확인. Frame 이라는 데이터 단위를 사용함
  • 3계층, 네트워크 계층(Network Layer) : 여러 지점을 거칠 때 경로를 찾아줌.(라우팅) IP Header가 여기서 붙음
  • 4계층, 전송 계층 (Transport Layer) : 두 지점간의 신뢰성 있는 데이터를 주고 받게 해주는 역할. TCP헤더가 여기서 붙음
  • 5계층, 세션 계층 (Session Layer) : 두 지점간의 프로세스 및 통신 상태를 관리하는 역할. 포트번호를 기반으로 통신 세션을 구성함.
  • 6계층, 표현 계층 (Presentation Layer) : 인코딩 및 데이터 형식의 차이를 조절함. (데이터 암호화 & 복호화, 데이터 변환 등이 이루어짐) 데이터를 어떻게 보여줄지를 처리 하는 계층
  • 7계층, 응용 계층(Application Layer) : 우리가 사용하는 응용 서비스나 프로그램이 작동하는 계층.

TCP 4계층

TCP/IP는 OSI 7계층 보다 먼저 나온 규격이다. OSI와 나누는 기준이 달라서 4계층으로 나누어 진다. (5계층으로 나누는 사람도 있다고한다.)

OSI 7계층과 TCP/IP 4계층.

TCP/IP 4계층을 간단히 정리하면

  • 1계층, 네트워크 액세스 계층(Network Access Layer or Network Interface Layer) : 하드웨어 적인 요소를 담당한다. MAC 주소를 이용해 신뢰성 있는 전송을 보장한다.(OSI 7 계층에서 1,2 계층 역할.)
  • 2계층, 인터넷 계층(Internet Layer) : IP헤더를 붙여서 패킷을 만들어 전송하는 역할을 한다. (OSI 7 계층에서 3계층 역할.)
  • 3계층, 전송 계층(Transport Layer) : 두 지점의 신뢰성 있는 데이터 전송 역할을 한다. IP와 PORT를 이용해 프로세스와 통신한다. (OSI 7 계층에서 4계층 역할.)
  • 4계층, 응용 계층((Application Layer) : 응용프로그램들이 이용 할 수 있는 인터페이스를 제공한다. 대표 프로토콜로는 HTTP, FTP, Telnet 등이 있음. (OSI 7 계층에서 5,6,7계층 역할.)

현재 OSI 7계층보다는 TCP/IP 4계층이 더 많이 활용되고 있다. OSI 7계층은 이론적인 느낌이라면 TCP/IP 4계층은 이론을 실제로 사용한다는 느낌이다.

--

--