Study/CS

[CS] 네트워크 - TCP/IP

dev_kong 2023. 1. 18. 00:01
728x90
728x90

TCP/IP

인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는

통신규약(프로토콜)의 모음이다.
인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.

 

즉, TCP/IP란 전 세계적으로 가장 많이 사용되는 공통된 통신 프로토콜 이다.

 

프로토콜

데이터를 주고 받기 위해 송신측과 수신측의 컴퓨터가 미리 정해놓은 공통된 메뉴얼

 

TCP/IP 4계층

TCP/IP에서는 송수신과 관련된 일련의 작업을 몇개의 단계로 나눠서 수행한다.
각 단계를 계층(layer)이라고 한다.

 

각각의 계층들은 프로토콜의 네트워킹 범위에 따라 네개의 추상화 계층으로 구성된다.

 

OSI

가장 널리 사용되는 네트워크 모델 중 하나.
TCP/IP와 달리 실질적으로 사용되지 않는 개념적 모델이다.

TCP/IP update

기존의 TCP/IP 모델에서 업데이트가 된 버전
기존에는 계층을 4개로 나눈 반면, 업데이트 모델에선 5계층으로 나누었다.

캡슐화와 비캡슐화

송신부에서는 각 계층을 지날 때 마다,
데이터의 앞뒤에 정보를 덧붙이게 되는데,


이 때, 데이터의 앞에 붙게되는 정보를 헤더
뒤에 붙는 정보를 트레일러라고 한다.
(트레일러가 없는 경우도 있음)

 

데이터와 정보를 하나로 묶어서 다루는 것을 캡슐화라고 한다.

 

반대로 수신부는 송신부에서 지나온 계층을 역순으로 지나게 되는데,
각 계층을 지날때 마다 데이터에서 정보(헤더와 트레일러)를 벗겨내는 과정을 거치는데
이 과정을 비캡슐화 라고 한다.

PDU

네트워크의 어떠한 계층에서 계층으로 데이터가 전달 될 때
한 덩어리의 단위를 PDU (Protocol Data Unit)라고 한다.

 

PDU는 제어관련 정보들이 포함된 헤더, 데이터를 의미하는 페이로드로 구성되어있다.

또한, 각 계층마다 부르는 명칭이 다르다.

  • 애플리케이션 계층 : 메시지
  • 전송계층 : 세그먼트(TCP), 데이터그램(UDP)
  • 인터넷 계층 : 패킷
  • 링크계층 : 프레임(데이터링크), 비트(물리)

애플리케이션 계층

애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS등 응용프로그램이 사용되는 계층이며,
웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층이다.

 

즉, 컴퓨터끼리의 주고받기를 사용자가 이용할 수 있는 통신 서비스의 형태로 만드는 것이 이 계층의 역할이다.

애플리케이션 헤더

애플리케이션 계층에서 추가되는 헤더를 애플리케션 헤더 라고 한다.
애플리케이션 헤더에는 요청과 응답에 관한 정보가 들어있다.

(프로토콜에 따라 헤더를 사용하지 않는 경우도 있음)

 

애플리케이션 헤더는 프로토콜에 따라 텍스트기반의 헤더와 바이너리 기반의 헤더가 있다.
텍스트 기반의 헤더는 사람이 읽을 수 있는 언어로 작성된 것이고,
바이너리 가반의 헤더는 사람이 읽을 수는 없게끔 작성되어 있지만, 컴퓨터가 처리하기에는 용이하다.

 

클라이언트가 서버에 서비스를 요청할 때 구체적인 데이터를 주고 받지 않고,
연락만 취할때는 데이터 부분을 비워두고 헤더만 보내기도 한다.

전송 계층

전송계층(Transport Layer)은 송신자와 수신자를 연결하는 통신 서비스를 제공한다.


애플리케이션 계층의 역할은 서비스를 실현 하는 것이라면,
전송 계층의 역할은 통신을 실현하는 것이다.

 

데이터가 항상 확실히 전달 되는 것은 아니다.
문제가 발생하는 경우에는 무언가 대처방안이 필요한데,
이 때 통신서비스에 맞는 방법으로 그것을 처리하는 것이 전송계층의 주된 역할이다.

TCP

패킷 사이의 순서를 보장하고, 연결 지향 프로토콜을 사용하여 신뢰성을 구축하여 데이터의 수신여부를 확인한다.

가상회선 패킷 교환 방식을 사용한다.

가상회선 패킷 교환 방식

데이터 전송 전, 노드사이를 연결하는 가상회선을 만들고, 각각의 패킷에 가상회선 식별자를 새긴다.
모든 패킷은 순서대로 정해진 가상회선을 통해 이동하기 때문에
모든 패킷은 전송된 순서대로 도착한다.

컨트롤 플래그

TCP는 데이터 전달에 신뢰도를 중요하게 여기기 때문에,
통신상태에 대한 연락을 취한다.
연락을 위해 사용하는 수단이 컨트롤 플래그이다.

컨트롤 플래그(control flag)는 TCP헤더에 포함되어 있으며 6비트로 이루어져있다.
각각의 자리마다 다른 상태를 의미하고, 상대에게 전하고 싶은 항목은 1로 그외의 항목은 0으로 만든다.

 

URG
1이면 세그먼트가 긴급한 데이터를 갖고 있다.

ACK
1이면 통신 확인에 대해 알았다고 응답한것(수신 양호)

PSH
1이면 세그먼트를 바로 애플리케이션 계층에 전달

RST
1이면 통신을 강제적으로 해제한다.

SYN
1이면 통신 개시를 요청한다.

FIN
1이면 통신 종료를 요청한다.

 

3-way-handshake

TCP는 신뢰성을 확보할 때 "3-way-handshake"라는 작업을 진행한다.
세 단계를 거쳐 신뢰성을 구축하고, 이후 데이터 전송을 시작한다.

  1. SYN 단계
    클라이언트가 서버에 SYN(000010)과 클라이언트의 ISN을 보낸다.
  2. SYN + ACK 단계
    클라이언트의 SYN을 수신한 서버는 클라이언트에게 SYN+ACK(010010)와 서버의 ISN, 승인번호(클라이언트 ISN + 1)를 보낸다.
  3. ACK 단계
    클라이언트는 ACK(010000)와 승인번호(서버의 ISN + 1)를 서버에 보낸다.

4-way-handshake

TCP가 연결을 해제할 때 발생하는 과정이다.
위와 마찬가지로 컨트롤 플래그를 사용하여 연락을 취한다.

  1. 클라이언트가 FIN으로 설정된 세그먼트를 보내고 FIN_WAIT_1 상태로 들어간다.
  2. 서버는 클라이언트로 ACK 세그먼트를 보내고 CLOSE_WAIT상태로 들어간다.
    클라이언트는 ACK 세그먼트를 수신하면, FIN_WAIT_2 상태로 들어간다.
  3. 2번 과정 이후 일정 시간 뒤에 서버는 FIN 세그먼트를 보내고, LAST_ACK 상태로 들어간다..
  4. 클라이언트는 TIME_WAIT 상태가 되고, 서버로 ACK를 보내고, ACK를 받은 서버는 CLOSE가 된다.
    이후 클라이언트는 어느정도의 시간을 대기하고 연결이 닫히고,
    서버와 클라이언트의 모든 자원의 연결이 해제된다.

 

TIME_WAIT

지연 패킷이 발생할 경우를 대비하고,(포트 재할당)
두 장치의 연결이 닫혔는지 확인하기 위해 (마지막 ACK에 문제가 발생할 경우)
바로 연결을 닫는 게 아니라 일정 시간 연결을 유지하는 상태

 

UDP

UDP에서는 사전 의논을 하지 않고, 일방적으로 데이터를 보낸다.

이러한 통신을 비커넥션형 통신이라고 한다.

 

데이터의 순서를 보장하지 않고, 수신확인도 하지 않는다.

 

또한, 여러상대에게 동시에 데이터를 보낼수도 있다.
복수의 특정인에게 보내는 것을 멀티캐스트,
불특정 다수에게 보내는 것을 브로드캐스트라고 한다.

 

UDP는 데이터의 확실성 보다도 실시간성이 중요시 되는 통신에서 주로 사용된다.
*ex) 스트리밍, IP전화 등이 있다.

인터넷계층

네트워크 계층이라고도 불리는 인터넷 계층은 IP주소로 지정된 목적지로 전송하기 위해 사용되는 계층이다.
통신에 있어서 누가 누구에게 전달할지라는 가장 중요한 정보를 다루고 있는 계층이다.

 

또한, 송신부에서 수신부까지 적절한 경로를 사용하여 전달하는 라우팅 기능도 네트워크 계층의 역할이다.

IP, ARP, ICMP 등의 프로토콜이 있지만, 중심역할을 하는 프로토콜은 IP 하나뿐이다.

IP

송신측에서는 트랜스포트 계층으로부터 받은 데이터에
IP헤더를 붙여서 데이터 링크 & 물리계층에 전달한다.

 

IP 프로토콜은 비커넥션형 프로토콜으로
데이터가 깨지진 않았는지 확인하거나, 목적지의 주소가 존재하는지 아닌지 정도의 판단처리는 하지만,
재전송 처리는 수행하지 않는다.
이러한 방식을 Best Effort 방식이라고 한다.

ICMP

위에서 말했 듯, IP는 비커넥션형 통신을 수행한다.
그래서 네트워크 계층에는 신뢰성 면에서 IP를 도와주는 프로토콜인 ICMP가 존재한다.

 

ICMP만 단독으로 통신하는 것은 아니기 때문에,
인터넷계층에서 중심역할을 하는 프로토콜은 IP 하나 이다.

링크계층

링크계층은 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며,
장치간에 신호를 주고받는 규칙을 정하는 계층이다.

 

이를 이더넷 프레임을 통해 에러확인, 흐름제어, 접근제어를 담당하는 데이터링크 계층
무선 LAN과 유선LAN을 통해 0과 1로 이뤄진 데이터를 보내는 물리 계층으로 나눌 수 있다.

데이터링크 계층

기기를 연결하는 여러가지의 방법중 동일한 방법으로 연결된 한덩어리의 기기를 데이터 링크라고 한다.


데이터 링크 간의 차이를 흡수하고,
네트워크 계층보다 위에 있는 계층이 그 차이를 의식하지 않고 작동할 수 있도록 하는 것이 데이터링크 계층의 역할이다.

 

데이터 링크 안에서 데이터를 어떻게 주고 받을지를 결정하는 것이 데이터링크의 이더넷 프로토콜이다.

이더넷

초기 이더넷 에서는 CSMA/CD 방식으롤 불리는 반이중통신을 사용하였다.

한 쪽에서만 전송할 수 있는 이 방식으로는 데이터 충돌이 발생하는 경우가 있다.

만일 충돌이 발생한다면, 일정시간 이후 재전송 한다.

 

현재는 전이중화통신을 사용하는데,
해당 방식은 송신로와 수신로로 나눠서 데이터를 주고 받기 때문에,
양쪽장치가 동시에 송수신할 수 있는 방식이다.


현대의 고속 이더넷을 이방식을 기반으로 하고 있다.

이더넷 프로토콜의 형식(= 이더넷 프레임)은 아래의 사진과 같다

Preamble
통신의 시작을 알림

SFD
다음 바이트 부터 MAC주소 필드가 시작됨을 알림

DMAC, SMAC
수신, 송신 MAC 주소

EtherType
IP 프로토콜을 정의한다 (IPv4, IPv6)

Payload
전달받은 데이터

CRC
에러확인 비트

 

데이터 링크 내에서 기기를 식별할 필요가 있을 때는 MAC 주소를 사용한다.

 

MAC 주소

NIC(Network Interface Card) 혹은 LAN카드에 할당되어 있는 고유한 번호.
데이터 링크 계층에서는 이 번호를 사요하여 기기를 정한다.

물리계층

물리계층은 실제로 시스템간의 연결선을 의미한다.
LAN선이라던가, 시스템을 연결한 케이블들 그런것들을 생각하면 된다.

유선LAN

유선LAN을 이루는 케이블로는 TP케이블광섬유 케이블이 대표적이다.

 

TP케이블

트위스트 페어 케이블의 약자인 TP케이블은 하나의 케이블로 보이지만
여덟개의 구리선을 두개씩 꼬아 만든 케이블이다.

실드처리에 따라 UTP 케이블과 STP케이블로 나뉘는데,
흔히 볼 수 있는 LAN선이 UPT케이블이다.

광섬유 케이블

말그대로 광섬유로 만든 케이블이다.
레이저를 이용해서 통신하기 때문에
위의 구리선과는 비교할 수 없을 만큼의 장거리 및 고속 통신이 가능하다.

무선LAN

무선 LAN 장치는 수신과 송신에 같은 채널을 사용하기 때문에
반이중화 통신을 사용한다.
그렇기 때문에 항상 충돌로 인한 메시지의 손실 및 왜곡에 대비하여
충돌방지시스템이 필요하다

CSMA/CA

반이중화 통신 중 하나로 사전에 가능한 한 충돌을 방지하는 방식을 사용한다.
충돌방지과정은 다음과 같다

  1. 데이터 송신 전 무선매체를 살핌
  2. 회선이 비어있는지 확인(캐리어 감지)
  3. 랜덤값을 기반으로 정해진 만큼 기다림.
    매체가 사용중이면 점차 그 간격을 늘려가며 기다림
    (IFS)
  4. 이후 데이터 송신

 

무선랜은 공기에 주파수를 쏘아 무선 통신망을 구축한다.
사용되는 주파수 대역은 다음과 같다.

 

2.4GHz
장애물에 강하나, 전파간섭이 일어나는 경우가 잦다.

5GHz
사용할 수 있는 채널수도 많고,
동시에 사용할 수 있기에 상대적으로 깨끗한 전파환경

728x90
728x90