Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

네트워크 보안 5주차 정리 (TCP/IP, DNS, ICMP) 본문

2-2/네트워크 보안

네트워크 보안 5주차 정리 (TCP/IP, DNS, ICMP)

김브래 2023. 9. 30. 11:10

TCP/IP


개요

- TCP/IP : Transmission Control Protocol / Internet Protocol

 

- DoD(미국방성)에서 정의한 모델
• ARPANET 프로젝트의 결과물

 

- OSI 7 계층 모델과 유사
• OSI 보다 먼저 정의
• 현재 가장 많이 사용되고 있음

 

- 인터넷에서 사용되고 있으며 다양한 네트워크와 상호 접속이 가능


TCP/IP 계층 구조


TCP/IP 계층 구조

OSI 계층 모델에 대응되는 상호 통신을 위한 각 계층별 프로토콜을 정의

 

응용(Application)은 OSI 계층 모델에서 5계층 이상을 모두 포함

 

3 & 4 계층은 운영체제에서 처리

 

1 & 2 계층은 이더넷(Ethernet) 장치 및 디바이스 드라이버(device driver)에서 처리
• 2 계층의 LLC는 운영체제 영역에 해당
• 2 계층의 MAC은 이더넷에서 처리(펌웨어)

응용(Application) 계층

• 네트워크를 사용하는 응용프로그램
• 응용프로그램이 네트워크에 접근을 가능하도록 해주는 역할
• 응용프로그램간의 세션을 연결
• 서로간의 약속된 메시지를 송수신
• 예: DNS, HTTP, FTP, TELNET, SMTP, SNMP 등의 응용프로그램용 프로토콜

 

전송(Transport) 계층

• EP(End-Point)까지 데이터를 전송
• EP는 주로 프로세스가 됨
• 일반적으로 종단주소는 포트번호(Port)로 이루어짐
• 예: TCP, UDP

 

네트워크(Network, 또는 인터넷) 계층

• 종단 단말기(호스트 장치)까지 데이터를 전송
• 일반적으로 호스트들은 독립적인 IP 주소를 가짐
• 라우터간 패킷 전달 및 경로를 설정
• 예: IP, ARP, RARP, ICMP, IGMP

 

네트워크 인터페이스(인터넷 접근) 계층

• 케이블, 송/수신기, 링크프로토콜, LAN 접속같은 물리적인 연결을 담당

TCP/IP를 통한 인터넷에서의 데이터 전달

응용 계층 주요 서비스*

FTP(File Transfer Protocol)
• 사용자의 파일을 업로드/다운로드하는 프로그램
• 기본 포트번호 : 21(그 외 데이터 전송을 위한 동적인 포트 제공)


DNS(Domain Name Server)
• DNS Query를 통해 IP주소를 얻기 위한 서비스 제공
• 기본포트: 53


HTTP(Hyper Text Transfer Protocol)
• 웹브라우저와 웹서버 간 HTML 문서를 전달하기 위해 제공
• 기본 포트번호: 80(암호화 포트: 8080HTTPS)


Telnet
• 원격의 서버에 접속하여 사용자 명령 처리를 위한 텍스트기반의 인터페이스를 제공
• 기본 포트번호: 23 (추가, Telnet기능에 보안 요소를 적용한 서비스: SSH22번 포트)


SMTP(Simple Mail Transfer Protocol)
• 메일 서버간 이메일 전송을 위한 서비스를 제공
• 기본 포트번호: 25


SNMP(Simple Network Management Protocol)
• 네트워크의 상태를 모니터링 하거나 네트워크를 관리하기 위한 프로토콜

전송 계층 - Transport Layer

종점(EP: End Point) 간 데이터 전송을 위한 계층
• 종단 주소: 포트번호(Port Number)

 

프로세스간 논리적인 연결(Logical Link/Communication)을 수행
• 프로세스간 통신을 목적(IPC: Inter - Process Communication)

 

프로토콜 종류에 따라 신뢰성기능 제공
• 데이터 흐름 및 오류를 제어(대표적 예: TCP)

 

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 존재
• TCP : 연결 지향형(Connection Oriented) 방식으로 운영
• UDP : 비연결형(Connectionless) 방식으로 운영

 

데이터 단위: 세그먼트(Segment)

 

네트워크 계층

동일어: 인터넷 계층(Internet Layer)

 

송/수신 단말기의 주소들을 읽고 데이터 전송을 위한 경로(path)를 결정(routing)

 

네트워크를 통해 송/수신 단말(종단 노드) 간 데이터 전송을 담당
• 주의: 링크로 직접 연결된 인접 장치 간 데이터 전송의 담당은 링크 계층(OSI 모델)

 

종단 주소: IP Address

 

프로토콜 예: IP, ARP, RARP, ICMP, IGMP 및 라우팅 프로토콜(BGP, OSPF, RIP 등)

 

데이터 단위: 패킷(Packet) 또는 데이터그램(Datagram)

네트워크 접근/인터페이스 계층

동일어: 인터넷 접근 계층(Internet Access Layer)

 

전기적인 신호로 데이터를 전송하는 계층
• 광(Optics)이나 전파(Radio Frequency)도 해당

 

OSI 참조모델의 1 & 2계층(Physical & Data Link Layer)의 역할을 수행

 

LAN 카드 및 다양한 이더넷 장치에 해당

 

데이터 단위: 프레임(Frame)


MAC Overview


MAC - Medium Access Control

Ethernet에서 사용되는 계층적 이름

 

장치를 구분하기 위한 48비트의 고유값(주소)를 가짐
• 장치의 주소값으로 활용
• 상위 24비트: 제조사(vender) ID
• 하위 24비트: 장치 ID

 

동일 네트워크 내 MAC 주소는 유일(unique)해야 함


인터넷 도메인


도메인(domain)

- 인터넷에 있는 연결되어 있는 컴퓨터(또는 단말장치)를 쉽게 접근할 수 있도록,

기억하기 쉽게 문자형태로 만들어 놓은 주소체계

 

- 인터넷주소에 대해 쉽게 접근할 수 있도록 만들어진 기술

 

- 트리 구조의 주소체계를 가짐

국가 도메인

ccTLD : country code Top Level Domain

 

인터넷 상에서 국가를 나타내는 도메인명으로 구성

 

영문을 기본으로 함
• 영문 형식: .ko(한국), .jp(일본), .cn(중국), .us(미국) 등

 

국가마다 다양한 언어(자국어) 형태의 국가도메인을 허용
• 한글 형식: .한국(.대한민국)

 

일반 도메인

회사, 비영리기관, 연구기간 등 특성에 따라 정의된 도메인
• 예: .com(상업기관), .org(비영리기관), .gov(정부기관), .edu(교육기관) 등

 

도메인이름 등록

원하는 도메인을 일정의 수수료를 납부하여 일정 기간동안 보유하는 것

 

.kr / .한국 도메인 등록은 한국인터넷진흥원과 등록대행계약을 체결한 등록대행자 홈페이지에서 신청
• 한국인터넷진흥원에서는 도메인등록신청을 직접 받지 않음

 

등록대행자마다 수수료와 제공하는 서비스가 다름

 

등록대행자 수수료 및 서비스 비교 등을 통해 적당한 업체를 선택

 

도메인이름 등록 순서

krnic.kisa.or.kr 홈페이지 방문

 

신청하고자 하는 도메인 등록가능 여부를 확인

 

등록대행자 선택

 

등록대행자를 통해 도메인 신청 및 수수료 납부

 

whois.kr 홈페이지에서 도메인 등록 정보를 확인

 

DNS

DNS: Domain Name Server

 

할당된 도메인 영역(명, 주소)에 대한 정보를 관리하는 서버

 

도메인 주소를 IP 주소로 변환하는 서버


Internet Protocol


IP Overview

인터넷 프로토콜(Internet Protocol)
• 대표적 종류: IPv4 (0100b) & IPv6 (0110b)
• 데이터그램의 헤더(header)에 4비트의 영역에 번호가 명기됨


네트워크에 연결된 종단말(장치 또는 호스트) 간 데이터 전달을 위한 프로토콜

 

호스트 단말 구분을 위한 논리적 주소(식별값, ID)를 지정

 

패킷 교환망(packet switching networks)을 기반

 

단말 간 통신을 위한 라우터들의 경로를 설정

 

OSI 계층형 모델의 제3계층에 해당

 

데이터 단위: 패킷(packet) 또는 데이터그램(datagram)

 

비접속형(Connectionless) 
• 전달되는 패킷에 대해 상태 정보 유지하지 않음


비신뢰성(Unreliable)
• 패킷이 목적지에 성공적으로 도달한다는 것을 보장하지 않음
• Best-Effort 서비스

 

기본 역사

1969 : ARPANET를 위한 규격생성
~ 1970s : ARPANET의 기능 확장 및 다양한 변형을 수행(버전: 1~3)
1970s ~ : 첫 공식적인 안정화 버전(4)이 각종 시행착오 끝에 개발
1979 : 패킷망을 접속지향형의 개념을 적용한 ST 프로토콜(internet STream protocol)을 정의(버전: 5)
1990s : IP 버전4의 제약을 개선한 버전 공개(버전: 6)
2004 : IP 버전 9를 개발(특징: 256비트 주소 체계, 중국) 
- 표준안 채택은 불확실

 

운영 개념

TCP/IP 모델과 OSI 모델의 네트워크 계층의 기능을 수행

 

각 호스트를 식별하기 위한 주소 값을 4바이트(32비트)로 정의

 

네트워크를 구성하는 모든 단말장치(라우터 포함)들은 고유의 IP 주소를 가짐

 

바이트 단위로 구분하여 주소체계를 세분화

 

값의 영역에 따라 국가가 정해짐
• 주소 대역은 한국인터넷진흥원에서 확인 가능
• 꾸준히 변경되고 있음

 

정의 사항:
• 클래스, 서브네트워크, 
• 멀티캐스트, 브로드캐스트, 
• 고정주소, 루프백주소, 사설주소 등을 정의


IP 패킷의 구조


IP 특성

인터넷을 위한 프로토콜(Internet Protocol)

 

원격의 단말(장치 또는 호스트) 간의 데이터 전달을 위한 프로토콜
• 데이터 단위: 패킷 또는 데이터그램

 

비신뢰성(Unreliable)
• IP 데이터그램이 목적지에 성공적으로 도달한다는 것을 보장하지 않음

 

비접속형(Connectionless) 
• 전달되는 데이터그램에 대해 상태 정보 유지하지 않음

 

주소 지정
• 각 네트워크 상에 접속해 있는 노드의 주소를 데이터의 목적지로 지정

 

경로 설정
• IP의 주요 기능
• 최적의 경로를 설정해 주는 역할

 

프로토콜 데이터 유닛(PDU)

헤더(header, PCI)와 데이터(Payload, SDU) 부분으로 구성됨

 

헤더는 TCP/IP 모델의 네트워크 계층에서 처리를 위한 제어정보들이 저장되어 있음

 

전체 최대 64K bytes의 크기(216 - 1)를 가질 수 있음

IP 구조

VER(4비트)
• 4개의 비트로 구성(범위: 0~15)
• 전송되는 IP 패킷(데이터그램)의 버전을 정의
• IPv4의 경우 4(0100b)로 정의됨


HLEN(4비트)
• 헤더의 크기
• 32비트 단위
• 길이는 표시 값에 4를 곱한 값
• 최소값: 5(기본 값, 0101b)

SERVICE(8비트)
• TOS : Type Of Service라고도 불림
• 8개의 비트로 구성
• 서비스 클래스의 우선순위, 지연, 처리율 등 지정
• 보통 0의 값을 가짐(악용방지 차원)
• 현실성 X = 현재 미지원

TLENGTH(16비트)
• Total Length
• 데이터그램 전체 길이
• 헤더 포함
• MTU는 최대 216 - 1의 값(64K)을 가짐
• 단위 : 바이트 단위

ID(16비트)
• 16개의 비트로 구성
• IP 패킷의 식별을 위한 값
• 중복 방지
• 네트워크의 다양한 경로를 통한 전달과정에서 중복되는 패킷 수신 시, 이를 판별

FLAGS(3비트)
• 단편화 상태 표기
• 동일 ID의 IP 패킷에 대하여 단편화 여부를 판단 및 단편화(fragmentation) 시 재조립(re-assembly) 수행


OFFSET(13비트)
• 단편화의 위치(오프셋)을 표현
• 재조립을 위한 순서확인용

TTL(8비트)
• Time To Live
• 홉 카운터 값(노드 통과시 1씩 감소)
• 라우터의 수에 대한 상한을 설정하여 데이터그램의 생존 시간을 제한


TYPE(8비트)
• Protocol Identifier
• SDU가 전달될 상위 프로토콜의 유형을 정의
• 대표적 예: 1(ICMP), 2(IGMP), 6(TCP), 8(EGP), 17(UDP), 89(OSPF) 등

CHECKSUM(8비트)
• 헤더에 대한 16비트 오류 검사
• CRC 기법을 사용

 

SOURCE/DESTINATION IP ADDRESS(각 32비트)
• SOURCE : IP 데이터그램의 송신자 주소
• DESTINATION : IP 데이터그램의 수신자 주소

 

OPTIONs(32 X n 비트)
• 네트워크 점검 또는 디버깅의 목적
• HLEN의 값에 따라 이 범위가 달라짐


IP 단편화 및 재결합


단편화 및 재결합

- 네트워크에는 MTU(Maximum Transfer Unit)라는 각 노드당 최대 보낼 수 있는 단위가성능에 따라 달리 적용

 

- 전송하는 데이터그램(패킷)이 MTU보다 크면, 이를 분해하여 전송


IP 주소 체계


목적

- 단일화된 가상적 통신 시스템을 제공
- 동일한 방식의 주소 체제를 갖도록 함
- 각 주소는 반드시 독립적(Unique)이어야 함


IP 주소

물리주소와는 다른 독립적인 주소지정 방법

 

32비트의 IP 주소는 2진수로 표시
• 1바이트 단위로 구분하여 표현
• 사용자는 이해하기 편리한 10진 표기 형식을 사용

 

주소의 표현 방식은 Big-Endian 방식의 정수체계를 가짐

IP 주소체계

클래스(Class)

• 클래스 주소 지정(classful addressing) 방법을 선택

 

• 전치부(prefix)와 후치부(suffix)의 두 부분으로 구성
– 전치부 : 네트워크에 할당된 주소(네트워크 식별자)
– 후치부 : 호스트 또는 단말에 할당된 주소(호스트 식별자)

 

• 네트워크 ID의 범위가 커지면 호스트ID의 범위가 작아 짐

 

클래스 범위

• Class A (0 ~ 127)
– 첫 7개의 비트가 네트워크 식별자가 됨
– 동일 네트워크에 3 바이트의 호스트를 가질 수 있음

 

• Class B (128 ~ 191)
– 첫 14개 비트가 네트워크 식별자가 됨
– 동일 네트워크에 2 바이트의 호스트를 가질 수 있음

 

• Class C (192 ~ 223)
– 한 네트워크에 254개의 호스트를 가질 수 있음

 

• Class D (224 ~ 239)
– 멀티캐스트 주소로 사용되는 주소 영역

 

• Class E (240 ~ 255)
– 라우터 간 경로 설정 등의 제어를 위해 사용되는 주소

특수한 IP 주소

모두 0인 주소
• 32비트의 모든 값이 0으로 구성되어 0.0.0.0으로 이루어진 주소
• 주소를 할당 받지 못한 호스트가 외부로 패킷을 전송할 때 사용
• 일반적으로 새로운 주소를 할당 받기 위한 용도로 부트스트랩(bootstrap) 때 수행됨
• 2계층에서는 MAC의 주소가 있으므로, 주변의 호스트 장치들에게 자신의 존재를 알림
• IP를 동적으로 할당하는 서버(DHCP 서버)가 존재하면, 이를 통해 새로운 IP주소를 부여 받게 됨

 

모두 1인 주소
• 또는 마지막 8비트가 모두 1인 주소
• 동일 네트워크에 존재하는 모든 호스트 장치들에게 일괄적으로 패킷을 전달하기 위해 사용
• 브로드캐스트 전송을 위해 사용
• 브로드캐스트 주소라 함

 

루프백(loopback) 주소
• A클래스의 범위 중 가장 큰 값인 127(0111 1111b)로 시작되는 주소
• 호스트 컴퓨터 내부의 프로세스 간 통신(IPC)을 위해 사용
• 운영체제는 전치부(prefix) 값을 통해 특정 프로세스에서 생성한 패킷이 외부로 전달되는 것을 차단
• 네트워크 장치로 전혀 전달되지 않음
• 송신된 패킷은 운영체제가 관리하는 주기억장치의 특별한 공간에 기록

 

공인 IP 주소

IANA
• IANA (Internet Assigned Numbers Authority)
– 인터넷 할당 번호 관리기관
• IP 주소, 최상위 도메인 등을 관리하는 단체

 

ICANN
• ICANN (Internet Corporation for Assigned Names and Numbers)
– 국제 인터넷 주소 관리 기구
• 1998년 설립
• 인터넷기반 비즈니스, 기술, 학계 등으로 구성
• IANA는 ICANN의 소유물

대륙별 IP 주소 관리

대한민국의 인터넷 관리
• 한국인터넷진흥원(KISA: Korea Internet & Security Agency) 산하의 한국인터넷정보센(KRNIC: Korea Network Information Center)에서 수행

 

• 1996년부터 한국인터넷정보센터(한국인터넷진흥원의 전신)가 인터넷주소자원 관리기관
• 아·태지역 인터넷주소자원 관리기관인 APNIC으로부터 IP주소를 확보
• KRNIC에서는 각종 ISP(인터넷공급업체, 예: KT, LG U+, SK 브로드밴드)에 IP 주소들을 할당
• ISP는 개별사용자고객에게 독립적인 IP주소(세상에서 유일한 주소)를 할당

IP 사설 주소

Private IP Network(사적인 독립 네트워크)

 

인터넷에서 호스트를 구분하기 위한 전용의 IP주소(즉 공인 IP주소)가 아닌 사적인 용도를 위해 허용 되는 IP주소

 

마치 주파수의 ISM 밴드 (Industrial, Science, Medical band) 개념과 유사

 

동일 사설주소를 사용하는 네트워크 외부로는 전달되지 않음(라우터에서 폐기)

 

라우터의 설정에 따라 사설주소의 값이 공인 IP주소로 변환되어 외부로 나갈 수 있음

 

관련 주소 정의: RFC 1918(Address Allocation for Private Internets)

 

NAT(Network Address Translation)
• PAT(Port Address Translation)라고도 함
• 공인된 IP주소를 갖는 경우에는 포트번호를 변환하는 기법을 사용

주소 영역
클래스별 사설 IP를 위한 값이 존재


클래스 A : 10.0.0.0 ~ 10.255.255.255
클래스 B : 172.16.0.0 ~ 172.31.255.255
클래스 C : 192.168.0.0 ~ 192.168.255.255

 

NAT - Network Address Translation
• 공인 IP주소에 대하여 다수의 호스트들이 공유하여 인터넷에 접근하기 위한 기술
• 부족한 IP주소 문제를 해결 하기 위해 공유하는 방식
• NAT를 수행하는 장치는 공인 IP주소를 갖고 라우터의 역할을 수행
• NAT 하단의 네트워크를 사설 네트워크(Private Network)이라 함
• 사설 네트워크에서는 사설IP 주소를 통해 호스트들의 장치들이 식별됨
• 사설 IP주소와 공인 IP주소 간 변환을 위해서 NAT 장치는 일반적으로 제4계층의 포트
번호를 활용하여 정보를 매핑함


 IP 서브넷


Sub Network

네트워크를 조금 더 작은 단위로 분할

 

세분화 개념을 적용

 

기존: IP 주소를 클래스로 분류하여 전치부(prefix)를 네트워크ID로 후치부(postfix 또는 suffix)를 호스트ID 방식(2단계)으로 함

 

서브넷 적용: 기존 IP 주소 클래스 체계를 세분화 하기 위해 서브넷을 추가하여 3단계로 구성
• 2단계: 네트워크ID + 호스트 ID
• 3단계: 네트워크ID + 서브넷 ID + 호스트ID

서브넷팅 - subnetting

- 서브넷을 구성하기 위한 IP 주소의 구성을 변경하는 과정
- 호스트용 ID영역의 일부를 네트워크 영역으로 재정의

장점

- 브로드캐스트 영역 축소(트래픽 감소 효과)
- 주소 절약
- 라우팅 정보의 크기를 감소

서브넷 마스크

- 브로드캐스트 영역 축소(트래픽 감소 효과)
- 주소 절약
- 라우팅 정보의 크기를 감소

CIDR - Classless Inter-Domain Routing

- 1993년 IETF에서 표준 IP 주소 할당방식으로 도입
- 고갈되는 IP 주소를 기존의 클래스 기반 IP 주소 할당 방식보다 더 효율적으로 사용할 수 있음
- 클래스의 개념을 달리하므로 도메인 간 라우팅 기법이라고도 불림

서브넷 계산 및 분석

- 네트워크 ID 추출


IP VPN


VPN 개념

- Virtual Private Network : 가상 사설 네트워크
- VPN 터널링
- 인터넷으로 연결된 다른 장소에서 단말이 사설네트워크에 접속하여 그 구성원이 될 수 있도록 하는 기술
- 네트워크 영역의 물리적인 공간을 극복하기 위한 기술(scalability)
- 네트워크 영역은 일반적으로 라우터단으로 구분, 일반적으로 이 라우터에 의해 제공되는 서비스들 중 하나임

 

장점

- 외부로부터 허가 받지 않은 단말의 사설네트워크 접근을 차단
- 물리적 공간에 대한 네트워크 영역제한을 극복
- 특정 네트워크영역에서만 허가되는 작업에 대한 지원
- 접속 우회
- 데이터 암호화에 따른 보안성 향상

 

단점
- VPN 기능은 서버에 의해 접속 및 데이터 중계가 수행됨
- VPN 서버는 관리설정에 의해 VPN 클라이언트의 정보 및 전송데이터 등이 로그로 기록될 수 있음
- 관리자의 의도 및 VPN의 해킹을 통해 개인정보가 노출될 수 있음
- VPN 클라이언트에게 웹클라이언트 광고 등의 불필요한 정보가 전달될 수 있음
- 해커 등에 의한 VPN 기반 우회접속 기능을 통해 악용되어 현재 국제적으로 많은 활성화가 이루어지고 있음
- IP 추적 회피로 인하여 공격자의 위치를 파악하는데 어려움이 있음


TCP 개요


특징

Transmission Control Protocol

 

종단 간의 연결을 설정한 후 데이터를 스트림형태로 전송

 

연속하는 스트림데이터의 특성
• 접속이 종료될 때까지 하나의 스트림으로 간주
• 데이터의 경계가 없음

 

연결형(Connection Oriented) 프로토콜

 

전송된 데이터에 대하여 신뢰성을 보장

 

응용 프로그램(프로세스) 간에 메시지를 전달
• SAP(Service Access Point)로 포트 번호(Port Number, 16 bits)를 이용
• 다 수의 포트 번호를 사용하여 다중 연결을 허용

 

데이터 단위: 세그먼트(Segment)

 

흐름 제어 방식: Slow-Start 알고리즘 사용

클라이언트와 서버

TCP는 클라이언트와 서버의 관계로 동작

 

클라이언트(Client)
• 서비스를 요청
• 서버에 접속을 요청

 

서버(Server)
• 서비스를 제공
• 클라이언트 접속을 수락하기 위한 대기상태 진입
• 서버 기능을 수행하는 프로세스를 데몬(demon) 또는 서비스(service)라고도 함


TCP 연결


연결 설정

3단계 메시지 교환(3 way-handshake) 방식을 사용
• 일부 4단계 메시지 교환 방식도 사용

 

TCP 세그먼트 헤더의 SYN와 ACK필드를 활용

 

연결을 위해 최소 1.5 x RTT(Round Trip Time)가 소요

연결 해제

3단계 메시지 교환(3 way-handshake) 방식을 사용
• FIN과 ACK 필드를 활용

 

연결을 위해 최소 1.5 x RTT(Round Trip Time)이 소요

 

상대측이 연결을 종료할 때까지 기다린 후에 자신도 종료하는 대기 과정이 필요

 

접속 해제를 요청한 쪽은 전송한 ACK 세그먼트가 버려지기 이전에 네트워크에 남아 있을 수 있는 최대 시간(MSL: 
Maximum Segment Lifetime == RTT)의 두 배를 대기 시간으로 설정


TCP 신뢰성 및 흐름 제어


신뢰성 제공

- 전달되는 세그먼트에 일련번호(Sequence ID)를 사용
- 세그먼트의 값을 통한 누락 해결, 순서 교정 및 중복 세그먼트 방지
- 수신 세그먼트에 대한 ACK 또는 NAK회신


흐름 제어

- 네트워크의 상태에 따라 적당한 크기의 세그먼트를 전송

- ARQ 기법(기법: Sliding Window)을 사용


TCP 세그먼트 구조


헤더

- 최소 20바이트의 헤더 크기를 가짐

구조

전송 포트(Source Port)
• 운영체제내 송신 프로세스의 주소
• 응용프로그램을 식별하기 위해 운영체제에 의해 동적인 번호로 할당됨

 

수신 포트(Destination Port)
• 수신 프로세스의 주소
• 수신 포트는 서버 구동 시 할당됨

 

순서 번호(Sequence Number)
• TCP 세그먼트의 일련번호
• 일련번호는 세그먼트(segment) 별 1씩 증가
• 세그먼트의 누락 해결, 순서 교정 및 중복 세그먼트 방지용

ACK 번호
• 다음 번에 수신될 것으로 예상되는 세그먼트의 번호

 

헤더 길이(HLEN, Header Length)
• 헤더의 크기(지정 크기 X 4, 기본값: 101b)
– 기본값: 0101b = 5 -> 20바이트(=5 X 4)

 

• 이 값을 통해, 세그먼트내 데이터(SDU)의 시작 위치를 알 수 있음

 

예약(Reserve)
• Not Used
• 미래를 위해 남겨놓은 영역
• 현재까지 사용되지 않고 있음

플래그 비트(Flag Bits)

• 회선, 데이터의 관리와 제어 기능 등을 수행하는 영역
• 6개의 비트 플래그를 포함

 

• URG 플래그(Urgent)
– 긴급 포인터임을 알림
– 순서에 상관없이 먼저 송신됨

 

• ACK 플래그
– ACK 번호 영역의 값이 유효
– 접속 요청에 사용되는 SYN 메시지 이후에는 항상 1로 설정됨

 

• PSH 플래그
– 버퍼의 내용을 채우지 않고 바로 전송을 수행

 

• RST 플래그
– TCP 연결을 해제하기 위해 사용
– 전송 중에서 강제 접속 해제에 사용

 

• SYN 플래그
– 연결 설정에 사용

 

• FIN 플래그
– 전송할 남은 데이터가 없음을 알림, 즉 연결을 종료

윈도우 크기(Window Size)
• 흐름제어를 위해 사용하는 16비트 영역
• 송신지에 수신지의 버퍼 여유 크기를 지속적으로 통보


채크섬(Checksum)
• TCP 세그먼트 전체에 대한 오류 검출


긴급 포인터(Urgent Pointer)
• URG 플래그가 설정된 경우 긴급 포인터 영역
• 응급 데이터의 위치

 

옵션
• 다양한 확장 기능과 관련된 영역
• 옵션에 따라 TCP 헤더의 크기가 변함
• 타임스탬프, 최대 세그먼트 크기 등의 기능이 포함
• 일부 옵션은 SYN 플래그가 설정되어 있을 때만 전송


UDP 개요


특징

User Datagram Protocol

 

두 종단 간에 연결을 설정하지 않고 데이터를 교환
• 비연결형(Connectionless) 프로토콜
• 연결 등에 대한 상태 정보를 저장하지 않음

 

송신 측이 데이터가 제대로 도착했는지 확인하지 않음

 

오버헤드의 크기가 작음


UDP 세그먼트 구조


헤더

8바이트의 고정된 헤더 크기를 가짐

구조

Source Port(16비트)
• 송신 프로세스를 위한 접근 주소
• 운영체제에 의해 할당됨


Destination Port(16비트)
• 수신 프로세스를 위한 접근 주소
• 서버프로그램 작성 시 형성됨


Total Length(16비트)
• 헤더와 데이터 영역을 포함한 전체 세그먼트의 길이


Checksum(16비트)
• 세그먼트 전체의 오류 검사용 정보


TCP vs UDP*


ICMP 개요


역할

- ICMP: Internet Control Message Protocol

 

- IP에서 발생하는 문제를 처리하기 위한 프로토콜

 

- 오류 보고, 상황 보고, 경로를 제어하는 정보 전달 기능 등이 있음


ICMP 구조


구조

- IP로 캡슐화 됨
- ICMP는 IP로 캡슐화 되더라도 상위 계층 프로토콜로 간주하지는 않는 경향이 있음

타입(Type, 8비트)
• ICMP 메시지의 종류를 표시

 

코드(Code, 8비트)
• 각 메시지 타입별 코드값

 

체크섬(Checksum, 16비트)
• 세그먼트 전체에 대한 오류 검증

 

기타 헤더(32비트)
• 타입과 코드에 따라 달라지는 부분