TCP/IP란?
인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신 규약이다.
TCP(Transmission Control Protocol)는 데이터를 전송하기 전 데이터 전송을 위한 연결을 만드는 프로토콜이다.
IP(Internet Protocol)는 데이터의 조각을 최대한 빨리 대상 IP Address로 보내는 역할을 하는 프로토콜이다.
- TCP/IP초기 버전에서 업데이트 된 버전이 실질적으로 쓰이고 있다.

1. Physical Layer
👉🏻 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈
- 전기적, 기계적 기능적인 특성을 이용해 데이터를 전송한다.
- bit열을 아날로그 신호로 바꾸어 전선으로 흘려보낸다. (encoding)
- 아날로그 신호를 받으면 bit열로 해석한다. (decoding)
- PHY칩이라는 곳에 하드웨어적으로 구현되어 있다.
ex) 리피터, 허브를 통해 데이터를 전송하는 것
2. Data Link Layer
👉🏻 연결된 서로 다른 2개의 네트워크 장치 간의 데이터 전송을 담당해준다.
- 목적지 MAC Address까지 Frame이라는 데이터 단위를 전달한다.
- Network Layer로부터 온 Packet을 전달받아 Header에 정보를 추가하는 Framing 과정을 거친다.
- Header에는 전송될 기기의 MAC Address와 나의 MAC Address등이 쓰여진다.
- MAC Address는 Address Resolution Protocol을 통해 얻을 수 있다.
- 데이터 bit가 전송되면서 초기 데이터와 일치하는지 확인하는 Error control이 이루어진다.
- 데이터를 보내는 곳에서 받는 곳의 데이터 처리속도보다 빠른 속도로 데이터를 보내게되면 loss가 일어날 수 있다.
- 이를 방지하기 위해 Flow control이 이루어진다.
- LAN 카드에 하드웨어적으로 구현되어 있다.
3. Network Layer
👉🏻 목적지로 데이터를 전송하기 위하여 최적의 경로를 찾고(Routing), 다음 라우터에게 패킷을 넘겨주는 것(Forwarding)을 담당한다.
- Packet이라는 데이터 단위를 전송한다.
- IP Adress를 이용해 최단거리의 경로를 찾는다.(Routing)
- 다음 라우터에게 패킷을 넘겨주는 과정이 이루어진다.(Forwarding)
- Transport Layer에서 받은 Segment에 출발지의(Source) IP, 목적지의(Destination) IP를 Header에 추가한다.
- OS의 커널에 소프트웨어적으로 구현되어있다.
4. Transport Layer
👉🏻 Port 번호를 사용하여 도착지의 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 만든다.
- 대표적인 프로토콜로 TCP, UDP가 있다.
- 전송단위는 Segment이며 주소는 Port를 이용한다.
- Application Layer에서 전해진 데이터에 출발지(Source), 목적지(Destination), Port 번호를 헤더에 붙이는 작업을 수행한다.
- 목적지(Destination)에서는 출발지(Source)로부터 받은 Port 번호를 이용해 어떤 Process의 Socket으로 데이터를 전해줄지를 결정한다.
- Flow Control이 이루어진다.
- Congestion Control이 이루어진다. Source에서 Destination으로 가면서 여러 라우터들을 거치게되는데 각 node에서 패킷의 흐름을 제안하는 매커니즘이다.
- Reliable transfer을 보장한다. TCP의 경우 3 way handshaking을 통해 connection이 open된 후 데이터 전달 과정이 수행되는 것을 보장한다.
- Mutiplexing, Application Layer로부터 데이터가 Socket에 의해 Transport Layer로 전송될 때, 여러 Socket의 데이터를 수집하여 하나의 Segment에 Encapsulation하여 Network Layer로 전달한다.
- 목적지로 향하는 데이터를 모아서 출발지, 목적지의 Port 번호를 헤더에 부착하고 Network Layer로 전송한다.
- DeMutiplexing, Transport Layer에서 Segment가 Application Layer로 전달될 때 올바른 Socket으로 전달한다.
- Segment를 decapsulation한 후 어느 Port 번호를 통해 올바른 Application으로 가야하는지 결정한다.
5. Application Layer
👉🏻 TCP/IP Model의 최상위 계층으로, 네트워크를 통해 data를 주고 받을 수 있도록 응용프로그램으로 웹페이지 등을 제공한다.
- 모든 소프트웨어가 쉽게 데이터를 주고 받을 수 있도록 여러 프로토콜을 제공해준다.
- DNS
- HTTP
- FTP
- SMTP
- 누구나 자신만의 Protocol을 구성할 수도 있다.
용어 설명
-
리피터: 신호를 받아 더 높은 수준에 더 높은 힘으로 방해가 되는 곳의 반대 쪽으로 재전송함으로써 신호가 더 먼거리에 다다를 수 있게 도와주는 전자기기이다.
-
허브 : 네트워크 장비와 장비를 연결해주는 기능을 수행하는 장비이다. 더 거리가 먼 네트워크 장비와 통신하기 위해 리피터와 함게 사용한다.
-
IP Address: 인터넷에 연결된 각 기기를 구별하기 위해 사용되는 고유한 번호이다. IP 주소는 ISP(Internet Service Provider)에 의해 부여된다.
-
ISP: SKT, KT, LG유플러스 등 통신 사업자를 의미한다.
-
MAC Address: 네트워크 통신에서 통신 기기의 식별 번호를 나타낸다. IP 주소와의 차이는 IP 주소는 임시적으로 다른 주체에 의해 할당되는 것이지만, MAC 주소는 통신 기기의 하드웨어 자체에 고유된 고유한 식별 번호를 나타낸다.
- MAC 주소는 콜론(:)으로 구분된 6개의 부분으로 구성된다. 각 부분은 알파벳 또는 숫자의 조합으로 되어 있다.

-
Framing: 데이터 앞 뒤에 특정한 비트열을 붙이는 것을 의미한다.
-
스위치: 스위치는 스위칭을 하는 장비이다. 목적지로 출발한 데이터가 스위치를 거치게 되면, 스위치는 데이터의 목적지를 파악하여 적합한 경로로 스위칭 해주는 역할을 한다.
스위치는 데이터 링크 계층에 속하기 때문에 MAC 주소를 기반으로 작동한다.
-
라우터: 라우터는 라우팅을 하는 장비이다. 스위치와 마찬가지로 들어온 데이터의 정보를 확인하고, 자신이 보유한 정보를 토대로 목적지까지 적합한 경로를 찾아주는 라우팅 기능을 한다.
라우터는 IP 주소를 기반으로 작동하여 네트워크 계층에 속해 있다.
-
Port number: 포트 숫자는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)을 의미한다.
리액트를 실행했을 때에는 로컬 PC의 IP 주소로 접근하여, 3000번의 통로를 통해 실행 중인 리액트를 확인할 수 있다.
-
Socket: TCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점을 의미한다. Socket은 프로토콜, IP address, Port number로 정의된다.
-
end-to-end 통신: 단순히 한 컴퓨터에서 다음 컴퓨터로의 전달이 아니라, 송신 컴퓨터의 응용프로그램(프로세스)에서 최종 수신 컴퓨터의 응용프로램으로의 전달을 의미한다.
-
Flow Control: 데이터를 보내는 곳에서 데이터를 소비하는 곳보다 빠르게 데이터를 보내게 되면 Buffer에 쌓이게 된다. Buffer가 가득차면 데이터 손실이 일어날 수 있는데 이를 막기 위해 데이터 송신 속도를 조절하는 것
-
Congestion Control: 출발지에서 목적지까지 각 node에서 Packet의 흐름을 제어하는 것을 의미한다.
-
Reliable transfer: 3-WayHandshake에서 connection이 open되고 데이터가 보내지는 것을 보장한다.
-
Multiplexing: Application Layer로부터 데이터가 Socket에 의해 Transport Layer로 전송될 때, 여러 Socket의 데이터를 수집하여 하나의 Segment에 Encapsulation하여 Network Layer로 전달하는 것
-
DeMutiplexing, Transport Layer에서 Segment가 Application Layer로 전달될 때 올바른 Socket으로 전달하는 것