8 minute read

TCP/IP 프로토콜 개념

전송 제어 프로토콜은 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나이다.

네트워크 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로써 국제 인터넷 표준화기구 (IETF)에 기술되어 있다.

OSI7 Layer의 전송 계층과 네트워크 계층에서 동작하고

상위 계층의 응용 로그램을 구별한다.



TCP/IP OSI 7계층

1) 물리 계층 (physical)

2) 데이터 링크 계층 (Data Link)

3) 네트워크 계층 (Network Interface)

4) 전송 계층 (Transport)

5) 셰션 계층 (Session)

6) 표현 계층 (Presentation)

7) 응용 계층 (Application)



TCP/IP 4계층

1) 네트워크 인터페이스 계층 (Network Interface)

  • osi 7계층 의 물리 & 데이터 링크 계층 포함
  • Ethernet, FDDI, Token bus, Token Ring

2) 인터넷 계층 (Internet)

  • osi 7계층 네트워크 계층 (네트워크 상에서 경로 설정 & 주소를 지정)
  • IP, ICMP, IGMP, ARP, RARP

3) 전송 계층 (Transport)

  • osi 7계층 전송 계층 (상위 응용 계층에 대해 두 호스트간의 데이터 흐름 제공)
  • TCP : 두 호스트 간의 신뢰성 높은 데이터 흐름 제공 (데이터, 정보)
  • UDP : 아주 단순한 형태의 서비스 응용 계층에 제공 (음성, 영상)

4) 응용 계층 (Application)

  • osi 7계층 셰션 & 표현 & 응용 계층 (특정 애플리케이션에 대한 상세한 동작처리)
  • Talnet , FTP, SNMP, SMTP, POP, HTTP, DHCP, BOOTP, DNS



TCP 개념

  • Transmission Control Protocol
  • 전송제어 프로토콜로 OSI 7계층 Layer 의 전송 계층에 해당한다.
  • 송신측과 수신측의 신뢰성 있는 연결을 제공한다.
  • 네트워크 선로를 통해 전달 되는 과정에서 손실을 방지한 교정/재조립 가능

TCP특징

신뢰성 : 신뢰할 수 있는 단말 간 데이터 전달이다. 신뢰성을 제고하려면 손상되거나
없어지거나 중복되거나 네트워크 계층에서 순서가 틀어져 전달된 데이터 복구 필요 (신뢰성 높은 프로그램에 적합)
흐름 제어 : tcp 데이터 세그먼트를 송수신하는 컴퓨터는 cpu와 네트워크 대역폭의 차이 때문에
서로다른 데이터 속도로 작동 될 수 있음. 송신자가 보낸 데이터의 양을 제어한다
다중화 : 한 라우터의 많은 프로세스가 tcp 통신 서비스를 동시에 사용 할 수 있다.
(한번에 많은 양을 전송할 때)
3Way Handskaka : 연결을 설정하는 저라는 동기화 (SYN)
제어 플래그를 이용하여 3Way Handskaka 라는 세번의 메세지를 교환하게 된다.
수신측은 수신 된 데이터의 에러를 검사하여 에러가 있으면 스스로 수정할 수 없다



TCP 헤더 구조


https://velcdn.com

✔️Source port(송신), Destination port(수신) (16Bit)
세그먼트(전송 계층 데이터 단위)의 출발지와 목적지를 나타내는 필드로 각 각 16Bit 이다. 출발지와 목적지를 판별하기 위해서는 IP주소와 포트 번호가 필요함. IP주소는 네트워크 계층의 IP포트에 담기기 때문에 ,TCP 헤더에는 포트 필더만 존재 함

✔️Seqence Nember (32Bit)
시퀀스 번호는 전송하는 데이터의 순서를 의미, 수신자는 쪼개진 세그먼트 순서 파악 후 올바른 순서로 재조립함

✔️Acknowledment Nember (32Bit)
승인번호는 데이터를 받은 수신자가 예상하는 다음 시퀀스 번호를 의미한다.

✔️Flags
9개의 비트 플래그, 현재 세그먼트의 속성을 나타냄 Reserved 필드를 사용한 NS, CWR, ECE 플래그 : 기존에는 6개만 사용했지만, 혼잡제어기능 향상을 위해 추가

✔️URG : Urgent pointer (긴급포인터)
필드에 값이 채워져 있음을 알리는 플래그 해당 포인트가 가르키는 긴급한 데이터 먼저 처리 됌

✔️ACK : Acknowledment (승인번호/에러체크)
필드에 값이 채워져 있음을 알리는 플래그. 해당 플러그가 0 이라면 승인번호 필드 자체가 무시된다.

✔️PSH : Push 플래그
수신 측에게 데이터를 빠르게 응용프로그램에게 전달 해달라는 플래그이다. 해당 플러그가 0 이라면 자시의 버퍼가 다 채워질 때 까지 기다린다. 해당 플러그가 1 이라면 해당 세그먼트 이후에 더 이상 연결 된 세그먼트가 없음을 의미

✔️RST Reset 플래그
이미 연결이 확립되어 ESTABLISHED 상태인 상대방에게 연결을 강제로 리셋을 요청하는 의미

✔️FIN finsh 플래그
상대방과 연결을 종료하고 싶다는 의미의 세그먼트

✔️Windows size
윈도우 사이즈 필드에는 한번에 전송할 수 있는 양을 의미하는 값을 담는다. (현재 상태의 최대 버퍼 크기)

버퍼란 ? 동작속도가 다른 두 장치를 속도 연결을 조절해주는 “일시적인 저장장치”
$2^16 = 65535$ 만큼의 값을 표현할 수 있고, 단위는 바이트이므로 최대 크기는 64KB

✔️Urgent Pointer (긴급포인터)
URG 플래그가 1 이라면 수신 측은 이 포인터가 가르키고 있는 데이터를 우선 처리한다



TCP 포트

  • 포트 : IP주소와 함께 보내지고 받는 내선번호라고 생각하면 된다.
  • 인터넷 표준화 담당하는 IETF(Internet Engineering Task Force)의 RFC(Request For Comments) 문서 1700에서는 TCP/UDP 포트에 대해 정의하고 있다
    1. 알려진 포트(Well-Known) : 대부분 시스템에서 기본값으로 채용하고 있는 내선번호 (1~1023)
    2. 등록된 포트(Registered Port) : 서버 소켓(서비스)으로 사용되는 영역 (1024~49151)
    3. 동적 포트(Danamic Port) : 매번 접속할 때마다 포트번호가 변경되어 외부로 나가거나 내부로 들어오는 영역 (49152~65535)


잘 알려진 포트 목록

포트 TCP UDP 설명
20 TCP   FTP (File Transfer Protocol) 파일전송 프로토콜 - 데이터 포트
21 TCP   FTP (File Transfer Protocol) 파일전송 프로토콜 - 제어 포트
22 TCP   SSH (Secure SHell), ssh,scp, sftp 같은 프로토콜 포트 및 포워딩 - 시큐어 셀
23 TCP   텔넷 프로토콜 (Telnet Protocol) - 암호화되지 않은 텍스트 통신
25 TCP   SMTP (Simple Mail Transfer Protocol) - 이메일 전송에 사용
53 TCP UDP DNS (Domain Name System) - 도메인 네임 시스템
69   UDP TFTP (Trivial File Transfer Protocol) - 간단한 파일 전송 프로토콜
80 TCP UDP HTTP (Hyper Text Transfer Protocol) - 웹페이지 전송
110 TCP   POP3 (Post Office Protocol Version3) - 전자우편 가져오기에 사용
161 162   UDP SNMP (Simple Network Mangement Protocol) - Agent/Message 포트
443 TCP   HTTPS - 보안 된 HTTP (암호화 전송)
      SSH
      WWW



UDP 개념

User Datagram Protocol

  • 전송제어 프로토콜로 OSI7 Layer 전송계층에 해당 한다.
  • UDP의 전송 방식은 단순해 신뢰성이 낮다. (데이터그램 도착순서가 바뀌거나, 중복, 누락)
  • 일반적으로 오류의 검사와 수정이 필요 없는 애플리케이션을 수행



UDP 특징

  • 신뢰성 : TCP는 메세지 수신을 확인하지만, UDP는 메세지를 수신했는지 확인 불가
  • 순서 정렬 : TCP에서는 메세지가 보내진 순서를 보장하기 위해 재조립하지만 UDP는 메세지 도착 순서 예측 불가하다

  • 부하 : TCP와 비교시 속도가 빠르며 오버헤드가 없음

    오버헤드(overhead)는 

    어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다.

  • 비 연결성



UDP 헤더구조

https://velcdn.com

  • Source Port : 송신 측 포트 번호
  • Destination Port : 수신 측 포트 번호
  • LENGTH : 헤더와 데이터를 포함한 UDP 데이터 그램의 전체 길이
  • CHECKSUM : 데이터그램의 오류검사를 위한 필드



https://velcdn.com

IP 개념

Internet Protocol

  • 프로토콜 스위트 중 TCP, IP 가 가장 많이 사용되어, TCP/IP 프로토콜이라 불린다.

    프로토콜 스위트 (Internet Protocol Suite)

    컴퓨터들이 서로 정보를 주고 받는 통신규약 (프로토콜) 모음이다.

  • 인터넷 주소 체계를 결정하는 프로토콜로 호스트의 인터넷 주소를 결정하고, 이 주소를 사용해 목적지까지 경로를 설정한다.



IP 특징

  • 최선형 (Best Effort)서비스 : 최대한도로 전달(손실될 우려 있음)
  • 비 연결형 서비스
  • 패킷 분할 / 병합 가능
  • 데이터 체크썸은 없고, 헤더 체크썸만 제공
  • IPv4와 IPv6 : 버전4의 주소 고갈 & 보안 이슈 문제로 대처 방안인 버전6 등장(32Bit 128Bit)


IPv4 특징

클래스기반 주소 지정 : 주소 공간은 5개의 클래스로 분류 된다

✔️ A클래스 : 대 규모의 기관에서 사용 (첫번째 비트 0인 IP)

(0.0.0.0 ~ 127.255.255.255) / 기본서브넷: 255.0.0.0

✔️ B클래스 : 중 규모 기관에서 사용 (처음 2비트 값이 10인 IP)

(128.0.0.0 ~ 191.255.255.255) / 기본 서브넷: 255.255.0.0

✔️ C클래스 : 소 규모 기관에서 사용 (처음 3비트 값이 110인 IP)

192.0.0.0 ~ 233.255.255.255) / 기본 서브넷: 255.255.255.0

✔️ D클래스 : 전체 주소가 멀티캐스트 용으로 사용 (4비트 값 1110인 IP)

(244.0.0.0 ~ 239.255.255.255)

✔️ E클래스 : 전체 주소가 연구 목적용으로 남겨놓음 (4비트 값 1111인 IP)

(240.0.0.0 ~ 255.255.255.255)



IPv4 특징

  • IPv4의 32Bit 주소는 4개의 구분된 10진수 ‘옥텟(octet)’ 이라는 용어로 참조됨 10진수 하나가 전체 32bit 숫자 중에서 8bit 씩을 표현하기 때문이다.

  • 표준 유니캐스트용 IPv4주소에서 4자리 IP주소 일부분은 네트워크 ID를 나타냄

  • 서브네팅(Subnetting) : IP주소 자원을 효율적으로 사용하기 위함으로 큰 구조를 작은 구조로 나눈다.
  • CIDR(Classless Inter-Domain Routing) 에 의한 할당 (적당한 크기로 할댱한다)
  • 슈퍼네팅(Supernetting) : 여러 클래스를 하나의 큰 구조로 묶어 더 많은 클래스 사용하려는 기관들을 위해 고안됨

[사용 주소 형태]

  • 유니캐스트 : 1대1 전송 (개인)
  • 브로캐스트 : 1대G 전송 (그룹)
  • 브로드캐스트 : 1대N 전송 (방송을 통해 같은 네트워크 대역대 모든 호스트 전송)

클래스기반 주소 지정 : 주소 공간은 5개의 클래스로 분류 된다

  1. A클래스 : 대 규모의 기관에서 사용

    (첫번째 비트 0인 IP)

    (0.0.0.0 ~ 127.255.255.255)

    기본서브넷: 255.0.0.0

  2. B클래스 : 중 규모 기관에서 사용

    (처음 2비트 값이 10인 IP)

    (128.0.0.0 ~ 191.255.255.255)

    기본 서브넷: 255.255.0.0

  3. C클래스 : 소 규모 기관에서 사용

    (처음 3비트 값이 110인 IP)

    (192.0.0.0 ~ 233.255.255.255)

    기본 서브넷: 255.255.255.0

  4. D클래스 : 전체 주소가 멀티캐스트 용으로 사용

    (4비트 값 1110인 IP)

    (244.0.0.0 ~ 239.255.255.255)

  5. E클래스 : 전체 주소가 연구 목적용으로 남겨놓음

    (4비트 값 1111인 IP)

    (240.0.0.0 ~ 255.255.255.255)



IPv4 헤더 구조

https://velcdn.com

  • VER : IP가 어떤 버전을 사용하지는지 나타냄 IPv4 이면 4(0100), IPv6 이면 6(0110)

  • HLEN (Header Length) : 헤더 길이
  • Service Type(TOS : Type Of Servisce) : 우선 순위 필드
  • Total Length (전체길이) : 헤더와 데이터를 포함한 패킷의 전체 길이
  • Identifcation (식별자) : 패킷마다 부여되는 고유번호/분할되어 온 프래그먼트들을 원래의 패킷으로 재조립할 때 이 식별자를 기준으로 한다.
  • Flags (플래그) : IP패킷(데이터그램)의 분할 가능 여부와 마지막 플래그먼트인지 알리기 위해 사용되는 필드
  • Flage Offset (분할 위치) : 하나의 패킷이 여러개로 분할 될 때 각각의 페이로드가 원래의 패킷 내의 페이로드 기준으로 어떤 위치에 있는지
  • TTL (Time To Live) : 패킷의 루핑 현상으로 인한 문제를 해결하기 위해 사용.

    라우터를 1개씩 지날 때 마다 1씩 감소되어 0이 되면 해당 패킷 패기

  • Protocol : 패킷에 캡슐화 되어 있는 상위 계층 PDU가 어떤 프로토콜을 사용하는지
  • Header Ckcksum : IP헤더의 오류검사
  • Source IP Address(출발지IP주소) : 32bit
  • Destination IP Address(목적지IP주소) : 32bit
  • Option : 패킷의 전송 경로를 포함한 IP프로토콜의 동작 옵션



IPv6 특징

  • 확대된 주소 공간 (128bit) : 2188개의 주소 생성 가능
  • IPv4의 헤더보다 단순해짐으로, 성능 향상과 효율적인 라우팅 가능하다.
  • IPv4 헤더의 체크섬 필드가 IPv6에서는 삭제되었으며, 이 기능은 하위계층과 상위계층 프로토콜들에게 맡겨지게 되었다.
  • 단순해진 헤더 포맷 : 빠른처리 가능
  • 간편해진 주소 설정 : IPv6 내장된 주소 자동 할댱 기능을 통해 플러그 앤 플레이 설치 가능
  • 강화된 보안 기능 : IPSec 제공
  • 개선 된 모바일 IP : 이동성 지원

[사용 주소 형태]

  • 유니캐스트 : 1대1 전송
  • 브로캐스트 : 근접한 이웃간 전송(가까운 노드)
  • 브로드캐스트 : 1대G 전송 (그룹)

주소체계

https://velcdn.com

  • IPv4 주소 고갈문제 해결인 128bit
  • 16비트로 구분,각 16진수 (:)클론으로 구분

  • 128bit 중 앞 64bit는 네트워크 주소 뒤 64bit는 네트워크에 연결된 장비에 할댱되는 인터페이스 주소를 의미



IPv6 헤더 구조

[기본 헤더]

https://velcdn.com

  • IPv4 보다 단순해짐
  • 성능 향상, 효율적 라우팅
  • 기본 헤더의 크기 40바이트

  • VERSION : 버전을 나타냄
  • Priority : 우선 순위
  • Flow Label : 데이터의 특정한 흐름을 위한 특별한 처리
  • Payload Length : 데이터 그램의 길이(기본 헤더 제외)
  • Next Header : 확장된 헤더
  • Hop Limit : IPv4의 TTL 과 같은 역할
  • Source Address : 발신지 주소
  • Destination Address : 목적지 주소

[확장 헤더]

https://velcdn.com

  • 필요시 용도에 맞는 확장 헤더를 뒤에 추가함 / 라우팅 효율 증가
  • Hop-by-Hop Option Header : Path 상의 각 Hop에서, 배달/전달 처리 옵션을 지정
  • Destination Option Header : Packet 목적지에서, 배달/전달 옵션 저장을 위해
  • Routing Header : 경우해야 할 라우터 지정
  • Fragmentation Header : 요청한 페이로드가 MTU보다 크면 IPv6에서 source 에서 페이로드를 조각냄 Fragmentation Option Header를 사용하여 리어셈블 정보를 제공하여 Destination Node를 재결합
  • Authentication Header : IPSec의 인증 헤더
  • Encapsulationg Security Payload Header : IPSec의 인증 및 암호화 헤더

Leave a comment