강의 PPT - 수원과학대학교 정보통신과

Download Report

Transcript 강의 PPT - 수원과학대학교 정보통신과

2주차. TCP/IP 패킷 분석
수원과학대학 정보통신과
2.1 PC의 네트워크 설정 보기


명령창 열기: 시
작모든 프로그
램보조프로그
램명령프롬프
트 또는 시작실
행cmd
ipconfig /all
2
2.2 Wireshark의 설치와 사용
wireshark를 실행하여 인터페이스 보기 아이콘을 클릭한다
1.
인터페이스
리스트 보기 클릭
3
Wireshark – 인터페이스 고르기
인터페이스 리스트에서 인터넷과 연결된 인터페이스
를 고르시오.
2.
IPv6형식이면 클릭하여 IPv4형식으
로 바꾼다.
①체크
4
②클릭
Wireshark – 캡쳐링
패킷이 적절히 수집되면 캡처를 중단한다.
3.
캡처중지
5
Wireshark – 캡쳐링 결과 분석
캡쳐된 패킷들의 개요
화면으로 시간, 발신지
와 목적지 정보, 프로토
콜, 요약정보를 보여줌
위에서 선택한 패킷의
인캡슐레이션과 필드
값들을 보여줌
위에서 선택한 패킷의
바이트 값을 보여줌
6
캡쳐링 인터페이스 선택
2.
인터페이스 리스트에서 인터넷과 연결된 인터페이스
를 고르고 옵션을 클릭한다.
IPv6형식이면 클릭하여 IPv4형식으
로 바꾼다.
①체크
7
②클릭
옵션 창에서 인터페이스 고르기
①더블클릭
8
캡쳐 필터 입력
① host 자신의ip주소 를 입력한다.
②클릭
이렇게 필터를 넣으면 자신의 ip 주소
가 들어간 패킷만 캡쳐해주게 된다.
9
캡쳐 시작
10
①클릭
2.3 Ethernet (이더넷)

LAN에서 사용하는 가장 대표적인 네트워킹 방식


전세계 LAN의 95% 이상이 Ethernet
Ethernet의 가장 큰 특징

11
CSMA/CD MAC(Medium Access Control) protocol 사용
CSMA/CD

Carrier Sense Multiple Access /
Collision Detection

Carrier Sense (캐리어 감지)


Multiple Access (다중 접근)



<#>
Carrier가 감지되지 않을 때 PC나
server들이 연결된 매체를 통해 네
트워크 상에 데이터를 실어 보는
것
Collision Detection (충돌 감지)


통신을 하고자 하는 PC나 server
들은 네트워크 상에 통신이 일어
나고 있는지 carrier를 감지
두 개 이상의 장비들이 동시에 데
이터를 보내려다 서로 부딪치는
것
Collision이 발생하면 데이터를 전
송했던 PC들은 서로 랜덤
(random)한 시간 동안 기다린 후
데이터 전송을 재시도
15번을 반복해서 시도했으나 계
속 collision에 의해 데이터 전송에
실패할 경우 데이터 전송을 포기
12
2.3.2 이더넷 주소

MAC (Media Access Control) address




Physical address(물리주소), hardware address 라고도 함
참고) IP address는 logical address 라고도 함
Ethernet 상에서 각 장비의 NIC(Network Interface Card)들은
48bit(6 octet, octet: 8bits)의 고정된 주소를 보유함
표기법




00-60-97-8F-4F-86
00:60:97:8F:4F:86
0060.978F.4F86
48bits 중 앞 24bits는 제조자 코드, 뒤 24bits는 각 maker가 만든
NIC에 부여하는 일련번호임

제조자 코드는 OUI (Organizational Unique Identifier) code라고도 함
24bits
제조자 코드
13
24bits
일련번호
Unicast / Broadcast / Multicast

유니캐스트(unicast) 통신



일 대 일 통신
하나의 목적지 주소만을 적어서 특정한 PC에게 보내는 방식
브로드캐스트(broadcast) 통신


하나와 불특정한 다수와의 통신
Broadcast domain에 있는 모든 PC에게 한번에 전달하는 방식




Router는 broadcast packet을 전달하지 않으므로 router까지의 구간이
broadcast domain임
보통, 브로드캐스트 주소는 모든 비트가 “1”이다
이더넷의 Broadcast MAC address: FFFF.FFFF.FFFF
멀티캐스트(multicast) 통신


14
하나와 특정한 다수(특정 그룹 멤버)와의 통신
라우터나 스위치가 multicast를 지원해야 함
2.3.3 이더넷 프레임 형식

이더넷 프레임 구조
7
Preamble
15
1
6
6
2
46-1500
4
SFD
Destination
Address
Source
Address
Type
or
Length
Data
FCS





Preamble(101010…패턴의 7바이트) - 프레임 도착 알림,
타이밍 기능 제공
SFD(Start frame delimiter) - 프레임 시작을 나타내는 비트
열, 10101011
DA(Destination address) - 목적지 주소
SA(Source address) - 발신지 주소
Type or Length – 이 필드의 값이 1518보다 작으면 데이터
필드의 길이를 의미하지만 1536보다 크면 이 프레임에 어
떤 상위 계층 프로토콜의 패킷이 실려 있는 지를 나타냄



0x0800 : IP, 0x0806: ARP
Data - 46~1500 바이트길이
CRC - 오류 발견정보, CRC-32
16
2.3.4 Ethernet 표준

10Mbps Ethernet




100Mbps Ethernet




100Base-TX – category 5 UTP cable, 2 pair
100Base-T4 – category 3 UTP cable, 4 pair
100Base-FX - 광섬유(optical fiber)
1Gbps Ethernet (1GbE)




10Base5, 10Base2 - 동축 케이블
10Base-T – category 3 UTP cable, 2 pair
10Base-FL (fiber-optic) – 광섬유
1000Base-SX, 1000Base-LX – 광섬유
1000Base-T - category 5E UTP cable, 4-pair
1000Base-CX – STP
10Gbps Ethernet (10GbE)
17
2.4 IP (Internet Protocol)

IP의 특징


신뢰성 없는 비연결성의 데이터그램 프로토콜
최선노력전달 (best-effort delivery) 서비스 제공




18
흐름제어나 오류제어 등과 같은 기능은 사용하지 않으면서 모든
패킷을 동등하게 최선의 노력을 다해 전송
오류 발생시 폐기, 재전송 없음  데이터 전송을 보장하지 않음
신뢰성이 필요하면 TCP와 같은 상위 계층 (전송층) 프로토
콜을 사용하여 데이터 전송을 보장해야 함
데이터그램이 독립적으로 전달되므로 도착순서가 전송순
서와 다를 수 있음  상위 계층 프로토콜 (TCP)이 해결해
야함
2.4.2 IP 헤더 형식
( )안의 숫자는 비트수
VER
(4)
HLEN
(4)
DS
(8)
Identification
(16)
Time to live
(8)
Totoal Length
(16)
Flag
s (3)
Protocol
(8)
Fragmentation Offset
(13)
Header Checksum
(16)
기본헤더
20바이트
총 길이
20 ~
65535
바이트
Source IP Address
(32)
Destination IP Address
(32)
Option
Data
19
옵션헤더
0~40바이트
IP 헤더의 각 필드의 기능 (1)






VER - 버전, IPv4의 경우는 0100
HLEN - 헤더 길이, 4바이트 단위로 기록, 실제 헤더길이는 HLEN*4
DS (differentiated services) – 원래는 TOS (type of service) 필드로 라
우터에 특별한 처리를 요청할 목적으로 만들어졌지만 잘 사용되지 않
다가, 최근 QoS (quality of service) 제공을 목적으로 데이터그램의 등
급을 구별하기 위한 필드로 사용되고 있음
Total Length - IP 데이터 그램 총 길이(헤더와 데이터 길이의 합), 데이
터 길이는 총길이 – 헤더길이 (HLEN*4) 로 계산, 16비트이므로 IP 데
이터그램은 최대 65536 바이트가 될 수 있음
Identification, Flags, Fragmentation offset – 단편화 용 필드
Time to live (TTL) - 데이터그램을 폐기하기 전에 전달될 수 있는 홉
수, 이 필드값은 라우터를 거칠때마다 1씩 감소, 0이되면 라우터가 이
패킷을 폐기함, 이 필드는 패킷이 무한정 네트워크상에서 돌아다니는
것을 막기 위함임.

20
기본 TTL 값: Windows = 128, Linux = 64~255, Unix = 255
IP 헤더의 각 필드의 기능 (2)

Protocol – IP를 이용하는 상위 계층 프로토콜 정의


Header checksum



발신지 IP 주소
Destination IP address


헤더의 오류 검사를 위한 필드
라우터의 처리속도를 높이기 위해헤더만 오류 검사하고, 데이터의
오류검사는 안함  필요하면 상위계층에서!
Source IP address


1: ICMP, 2 : IGMP, 6: TCP, 17: UDP, 89 : OSPF
목적지 IP 주소
Option

21
선택사항
2.4.3 IP 주소 형식


인터넷에서 접속하는 연결을 구분하기 위해 호스트들
의 네트워크 인터페이스에 부여된 전세계적으로 유일
한 주소
IP 주소의 표현

IPv4(IP version 4) 에서의 주소: 4 bytes 크기


22
예: 192.168.166.254
IPv6(IP version 6)에서의 주소: 16 bytes 크기
Classful Addressing


초기의 IP 주소체계는 클래스형 체계이었으나 1990년대
중반 이후부터 비클래스형 체계가 도입됨
클래스형 IP 주소는 네트워크 부분(netid)과 호스트 부분
(hostid)로 구성되어 있음



Network: router를 거치지 않고 바로 받을 수 있는 하나의 broadcast
domain을 가리킴
Host: 각각의 PC나 장비
IP 주소 할당의 기본


하나의 Network에 속한 host들의 IP 주소들은 network part에 해당
하는 netid가 같아야 하고, host part에 해당하는 hostid가 서로 달라
야함
예) 하나의 Network에 할당된 IP 주소가 200.200.100.1 ~
200.200.100.255 일 때


23
netid: 200.200.100
hostid: 1 ~ 255
IP 주소의 클래스


하나의 IP 주소에서 netid와 hostid의 경계의 구분  Class
로 식별
IP 주소의 Class

A, B, C, D, E의 5개 class가 있음

A, B, C – Unicast 용, D – Multicast 용, E - 연구용
첫번째
바이트
클래스 A
클래스 B
두번째
바이트
네번째
바이트
세번째
바이트
netid
hostid
netid
- 주소범위 0.0.0.0 ~ 127.255.255.255
hostid
128.0.0.0 ~ 191.255.255.255
클래스 C
netid
클래스 D
Multicast address
224.0.0.0 ~ 239.255.255.255
클래스 E
Reserved
240.0.0.0 ~ 255.255.255.255
24
hostid
192.0.0.0 ~ 223.255.255.255
특수한 IP 주소들

Network address



Broadcast address




hostid의 모든 비트가 1인 주소
특정 네트워크의 모든 호스트로 브로드캐스팅
예) 163.152.255.255는 163.152.0.0에 속한 모든 호스트로 브로드캐스팅
Loop back address



hostid의 모든 비트가 0 으로 (netid, 0)의 형식
예) 163.152.0.0  클래스 B 네트워크 주소
127.X.X.X의 형식으로 127.0.0.1 이 보통 사용
자기자신을 가리키는 주소로써 시스템에 TCP/IP가 제대로 설치되고 작동
되는지 테스트하기 위해 사용
사설 IP




25
인터넷과 독립적인 사설망에서 TCP/IP를 사용할 경우 사용
클래스 A용 사설 IP: 10.0.0.0 ~ 10.255.255.255
클래스 B용 사설 IP: 172.16.0.0 ~ 172.31.255.255
클래스 C용 사설 IP: 192.168.0.0 ~ 192.168.255.255
디폴트 마스크

Class 별 default mask (default subnet mask라고도 함)



클래스
어떤 IP 주소로부터 네트워크 주소를 추출하는 마스크
(IP 주소) bit AND (Default Mask) = Network Address
슬래쉬 표기법 – 마스크를 간단히 표현하기 위해 슬래쉬(/) 후 1의
개수를 적는다
이진 패턴
십진 표현
슬래쉬 표현
A
11111111 00000000 00000000 00000000
255.0.0.0
/8
B
11111111 11111111 00000000 00000000
255.255.0.0
/16
C
11111111 11111111 11111111 00000000
255.255.255.0
/24
26
Subnetting의 필요성 (1)

Subnet을 사용하지 않을 때



27
Network 141.14.0.0의 host 수 = 65534개  너무 많다.
Broadcast domain이 너무 크다.
실제 상황에서는 통신이 어려울 것임.
서브넷 마스크로 서브넷 찾기

•
Subnetting을 사용할 때
서브넷을 안 쓸 때
netid
네트워크
주소 추출
hostid
netid
netid만 추출
hostid의 일부를 subnetid로 할당
•
0
서브넷을 쓸 때
netid
subnetid
hostid
netid
네트워크
주소 추출
28
subnetid
0
netid부터 subnetid까지 추출
서브넷 수와 호스트 수 계산

어떤 네트워크를 서브넷팅했을 때

사용가능한 서브넷 수 = 2subnetid 비트 수- 2


서브넷 당 사용가능한 호스트 주소의 개수 = 2hostid 비트 수- 2


Subnetid의 모든 비트가 0인 것(zero subnet)과 1인 것은 통상 사용하지
않음
Hostid의 모든 비트가 0인 것은 네트워크 주소용이고, 모든 비트가 1인
것은 브로드캐스트 주소용이므로 할당 불가
예: 클래스 B 네트워크에서 subnetid로 4비트, hostid로 12비트를 선택
했을 때
 사용가능한 서브넷의 개수 = 24- 2 = 14
 서브넷 당 사용가능한 호스트 주소의 개수 = 212- 2 = 4094
29
Subnet의 기본

Subnet mask



•
Subnet address를 추출하기 위한 mask  subnetid까지 비트 1
서브넷을 쓸 때 원래의 hostid에서 subnetid로 몇 비트를 할
것인가는 해당 사이트를 담당하는 네트워크 관리자의 선택
임
예) 클래스 B 네트워크에서 subnetid로 4비트, hostid로 12비
트를 선택했을 때
클래스 B 디폴트 마스크
11111111
•
11111111
00000000
00000000
255.255.0.0
00000000
255.255.240.0
새로운 서브넷 마스크
11111111
11111111
1111
0000
240
30
Subnet Mask

Subnet mask



Subnet address를 추출하기 위한 mask  subnetid까지 비트 1
원래의 hostid에서 subnetid로 몇 비트를 할 것인가는 해당 사이트를 담당하는
네트워크 관리자의 선택임
예) 클래스 B 네트워크에서 subnetid로 3비트, hostid로 13비트를 선택했을 때

사용가능한 서브넷의 개수 = 23-2 = 6


서브넷 당 사용가능한 호스트 주소의 개수 = 213-2 = 8190

31
subnetid의 모든 비트가 0(subnet zero)인 것과 모두 1인 것은 통상 사용하지 않음
서브넷 주소와 브로드캐스트 주소는 호스트에게 줄 수 없음
2.5 ARP

주소 변환 프로토콜 (ARP: address resolution protocol)


IP 주소를 MAC 주소로 변환, MAC 주소를 알아야 전송이 가능
ARP operation
1.1.1.2
1.1.1.1
모두에게:
IP주소 1.1.1.3의 호스
트는 네 물리주소를
알려줘!
1.1.1.3
1.1.1.4
32
1.1.1.2
1.1.1.1 에게:
내 물리주소는
12:34:56:78:9A:BC
1.1.1.1
1.1.1.4
1.1.1.3
ARP Packet
0
32
64
16
0
Hardware Type
Hardware
Length
Protocol
Length
31
Protocol Type
Operation
Request 1, Reply 2
Sender Hardware Address
Sender Protocol Address
Target Hardware Address
Target Protocol Address
33
ARP 패킷 형식









HTYPE (hardware type) – LAN의 유형, 예로 이더넷의 경우는 1
PTYPE (protocol type) – ARP를 사용하는 네트워크 프로토콜을 정의,
예로 IPv4의 경우는 0x0800
HLEN (hardware length) – 물리주소의 길이, 이더넷의 경우는 6
PLEN (protocol length) - 네트워크주소의 길이, IPv4의 경우는 4
OPER (operation) – ARP 요청인 경우는 1, 응답인 경우는 2
SHA (sender hardware address) – 송신 호스트의 물리주소
SPA (sender protocol address) – 송신 호스트의 네트워크 주소
THA (target hardware address) – 수신 호스트의 물리주소
TPA (target protocol address) – 수신 호스트의 네트워크 주소
34
Encapsulation of ARP Packet

ARP 패킷은 데이터링크층 프레임에 캡슐화
(encapsulation)됨
Destination
Address

Type
0x0806
ARP Packet
FCS
이더넷 프레임의 type 필드: 전송되는 데이터가 ARP임을
나타냄

35
Source
Address
0x0806: ARP
2.6 ICMP

IP의 단점



여러가지 이유에 의해 패킷이 폐기되어도 발신지에게 그 사실을 통
보할 수단을 보유하고 있지 않음
다른 라우터나 호스트의 상태를 파악하기 위한 방법 부재
ICMP (internet control message protocol)


위 2가지 단점을 보완하기 위한 IP의 보조프로토콜
네트워크층 프로토콜이나 IP 패킷에 캡슐화되어 전달됨
IP 헤더의 protocol
필드 값은 0x01
Destination
Address
36
Source
Address
Type
0x0800
IP
Header
ICMP Packet
FCS
ICMP 메시지 유형
분류
오류 보고
메시지
질의 메시
지
37
Type
3
4
5
11
12
8 또는 0
10 또는 9
15 또는 14
17 또는 18
내용
목적지 도달 불가능
송신지 데이터 전송 억제
방향 재지정
시간 초과
매개변수 문제
에코 요청 또는 응답
라우터 정보 요청 및 광고
타임 스탬프 요청 및 응답
주소 마스크 요청 및 응답
ICMP 메시지 형식
Type (1 byte)
Code (1 byte)
Checksum (2 bytes)
Type과 code에 따라 내용이 다름



38
Type – ICMP 메시지 타입
Code – 특정 메시지에 대한 세부 타입
Checksum – 전체 메시지 내용에 대한 16비트 checksum
2.6.1 ICMP 오류 보고 메시지

ICMP 오류 보고의 특징


오류 메시지는 최초 송신지에게 전달된다.
오류의 종류


오류가 보고되지 않는 경우





39
목적지 도달 불가, 송신지 억제, 시간경과, 매개변수 문제, 재지정
ICMP 오류 메지지를 전달하는 데이터그램에 오류가 발생할 때
단편화된 첫번째 데이터그램이 아닌 데이터그램에 오류가 발생
할때
멀티캐스트 주소를 가진 데이터그램에 오류가 발생할 때
127.0.0.0이나 0.0.0.0과 같은 특별한 주소를 가진 데이터그램에
오류가 발생할 때
오류 메시지의 데이터 부분에는 원래 데이터그램의 IP 헤
더와 데이터 중 처음 8바이트(TCP 나 UCP 포트번호가 포
함된 TCP 헤더의 일부나 UDP 헤더)가 포함됨
목적지 도달 불가 (Desitnation Unreachable) 메시지


라우터나 호스트가 데이터그램을 라우팅하거나 배달
할 수 없을 때 데이터그램을 폐기하고, 송신지 호스트
에게 “ICMP Destination Unreachble”(목적지 도달 불
가) 메시지를 보냄
코드 필드에 16개의 오류 코드를 기록하여 오류 원인
을 표시함
Type (0x03)
Code (0x00 ~
0x0F)
Checksum
Unused (Must be zero)
IP header + First 64 bits of datagram
40
발신지 억제 (Source Quench) 메시지


라우터나 호스트에서 처리할 수 있는 속도 이상의 데이터
그램이 계속 유입되어 버퍼의 용량를 초과하게 되면 데이
터그램이 폐기되는데 이때 이 메시지를 발신 호스트로 보
낸다.
이 메시지를 받은 발신 호스트는 발신 속도를 일시적으로
떨어뜨린 후 다시 서서히 올리는 데 이 메시지가 또 수신되
면 다시 속도를 떨어뜨림으로써 흐름제어를 제공한다.
Type (0x04)
Code (0x00)
Checksum
Unused (All zero)
IP header + First 64 bits of datagram
41
시간 초과 (Time Exceeded) 메시지



데이터그램이 라우터를 통과할 때마다 TTL 필드값이 1씩 줄어드는데
이 필드가 0이되면 라우터는 이 데이터그램을 폐기하고 폐기 내역을
송신 호스트에게 통보한다 (Code 필드값 = 0).
또한 단편이 손실되어 재조립 시간이 타임 아웃되었을 경우도 이 메시
지가 송신호스트에게 전달된다 (Code 필드값 = 1).
시간초과 메시지를 이용한 대표적인 응용: traceroute (Windows:
tracert)
Type (0x0B)
Code (0x00 or
0x01)
Checksum
Unused (All zero)
IP header + First 64 bits of datagram
42
traceroute
목적지까지의 경로상에 위치한 라우터들의 주소를 알아낼 수 있다.
43
매개변수 문제 (Parameter Problem) 메시지



라우터나 호스트는 데이터그램의 IP 헤더 매개변수에 오
류가 있을 경우 데이터그램을 폐기하고 parameter
problem 메시지를 송신지로 보냄
포인터 필드값은 오류가 있는 위치를 가리킨다.
코드 필드


0x00: 헤더의 필수 필드에 오류가 있다.
0x11: 헤더의 옵션 필드에 오류가 있다.
Type (0x0C)
Pointer
Code (0x00 or
0x01)
Checksum
Unused (All zero)
IP header + First 64 bits of datagram
44
2.6.2 ICMP 질의 메시지


네트워크 문제 진단 목적
질의 메시지의 종류
45
에코요청과 응답 (Echo Request and Reply) 메시지




원격 네트워크나 호스트에 도달할 수 있는지를 테스트 하기 위한 것.
ICMP 에코 요구(Type&Code:0x0800) 메시지를 받은 원격 라우터나
호스트는 ICMP 에코 응답(Type&Code:0x0000)을 사용하여 수신된 메
시지의 내용을 그대로 송신지로 보내준다.
전형적인 예: ping
송신측은 identifier와 sequence number에 ping 메시지마다 서로 다른
값을 부여함으로써 각 ping에 대한 응답메시지를 구별한다.
Type (8 or 0)
Code (0)
Checksum
Identifier
Sequence number
Optional data
46
2.7 UDP





사용자데이터그램 프로토콜 (User Datagram Protocol,
UDP)
흐름 및 오류제어가 없는 비연결이고 신뢰성 없는 전송 프
로토콜
최소한의 오버헤드를 가진 매우 간단한 프로토콜
작은 메시지를 송신하기를 원하고 신뢰성에 관하여 신경
쓰지 않는 응용에 적합, 간단한 요청-응답 통신을 요구하
는 프로세스에 적합
멀티미디어와 멀티캐스팅 응용에 적합
47
잘 알려진 UDP 포트번호
Port
Protocol
Description
7
Echo
Echoes a received datagram back to the sender
9
Discard
11
Users
13
Daytime
17
Quote
19
Chargen
53
Nameserver
67
Bootps
Server port to download bootstrap information
68
Bootpc
Client port to download bootstrap information
69
TFTP
Trivial File Transfer Protocol
111
RPC
Remote Procedure Call
123
NTP
Network Time Protocol
161
SNMP
Simple Network Management Protocol
48162
SNMP
Simple Network Management Protocol (trap)
Discards any datagram that is received
Active users
Returns the date and the time
Returns a quote of the day
Returns a string of characters
Domain Name Service
UDP 패킷 형식
16
0
Source
Port
Number
Destination
Port
Number
발신지
수신지
포트번호 포트번호
49
64
48
32
Total
Length
Checksum
총길이
검사합
Data
2.8 TCP

전송제어프로토
콜(Transmission
Control Protocol,
TCP)


스트림 연결지향
(stream
connectionoriented)의 신뢰성
있는 전송 프로토
콜, UDP에 비해서
복잡
잘 알려진 TCP 포
트번호
50
Port
Protocol
Description
7
Echo
Echoes a received datagram back to the
sender
9
Discard
Discards any datagram that is received
11
Users
13
Daytime
17
Quote
19
Chargen
20
FTP, Data
21
FTP,
Control
23
TELNET
25
SMTP
53
DNS
67
BOOTP
79
Finger
Finger
80
HTTP
Hypertext Transfer Protocol
111
RPC
Active users
Returns the date and the time
Returns a quote of the day
Returns a string of characters
File Transfer Protocol (data connection)
File Transfer Protocol (control connection)
Terminal Network
Simple Mail Transfer Protocol
Domain Name Server
Bootstrap Protocol
Remote Procedure Call
TCP 서비스 (1)

스트림 전송 서비스 (Stream Delivery Service)


51
UDP: 한 뭉치의 바이트들을 송신, 뭉치 간 상관관계 없음
TCP: 바이트의 흐름으로 데이터를 송수신
TCP 서비스 (2)




바이트와 세그먼트(segment)
전이중 서비스
연결 지향 서비스
신뢰성 있는 서비스
52
순서번호와 확인응답번호


순서번호와 확인응답번호를 사용하여 흐름제어와 오류제
어를 수행
바이트 번호







전송되는 모든 데이터 바이트에 번호를 부여
번호의 범위: 0 ~ 232-1
전송을 시작하는 데이터의 번호는 임의로 선정 (0부터 할 필요 없음)
예) 임의의 번호가 1000이고 6000바이트를 전송한다면, 1000에서
6999까지 번호가 매겨짐
순서번호

해당 세그먼트에서 운반하는 첫번째 바이트 번호

수신을 기대하는 다음 바이트 번호
확인응답번호
순서번호와 확인응답번호를 사용하여 흐름제어와 오류제
어를 수행
53
2.8.2 TCP 세그먼트 (Segment) 형식
( )안의 숫자는 비트수
Source Port Address
(16)
Destination Port Address
(16)
Sequence Number
(32)
Acknowledgement Number
(32)
HLEN
(4)
Reserved
(6)
U A P R S F
R C S S Y I
G K H T N N
Checksum
(16)
Window Size
(16)
Urgent Pointer
(16)
Option
Data
54
기본헤더
20바이트
옵션헤더
0~40바이트
TCP 세그먼트











Source port address – 발신지 포트 주소
Destination port address – 목적지 포트 주소
Sequence number – 순서번호, 이 세그먼트로 전송되는 첫 번째 데이
터의 바이트 번호
Acknowledgement number – 확인응답번호, 받기를 기대하는 다음 데
이터의 바이트 번호
Header length – 헤더 길이
Reserved – 예비, 사용 안 함
Control – 제어용 6비트: urg, ack, psh, rst, syn, fin 비트
Window size – 상대방 쪽이 유지해야 하는 바이트 단위의 윈도우의
크기, 수신자 윈도우(receiver window)의 크기
Checksum – 검사합
Urgent pointer – 긴급 지시자
Options and padding – 선택항목과 패딩 바이트
55
제어용 6비트 (control field)
URG
ACK
PSH
플래그
RST
의미
URG
긴급 데이터 필드의 값이 유효함
ACK
확인응답 필드의 값이 유효함
PSH
데이터를 푸쉬하시오
RST
연결을 리셋함
SYN
순서번호를 동기화함 (연결수립 시 사용)
FIN
연결을 종료함
56
SYN
FIN
2.8.3 TCP 연결




연결설정  데이터
송수신  연결 종료
연결설정 (Three-step
connection
establishment)
연결 종료 (Four-step
connection
termination)
연결 재설정 – RST
비트를 설정한 세그먼
트를 보낼 때
클라이언트
Flags: SYN, seq: 1000
TCP 연결 설정
Flags: SYN+ACK, seq: 2000, ack: 1001
Flags: ACK, seq: 1001, ack: 2001
데이터 전송
Flags: FIN, seq: 10000
Flags: ACK, seq: 20000, ack: 10001
TCP 연결 종료
Flags: FIN, seq: 20001, ack: 10001
Flags: ACK, seq: 10001, ack: 20002
시간
57
서버
시간