TCP/IP协议栈
阿彭
www.yeslab.net
www.yeslab.com.cn
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
本章目标
通过本章的学习,您应该掌握以下内容:
– 掌握TCP/IP分层模型
– 掌握三次握手过程建立TCP连接
– 掌握四次握手断开TCP连接
– 掌握TCP的滑动窗口机制
– 掌握IP、TCP和UDP的报文结构
– 掌握ping的工作原理和作用
– 掌握ARP的工作原理和作用
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP/IP介绍
全球范围内使用
主机
Internet
TCP/IP
主机
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP/IP 协议族
7
6
5
4
3
2
5
4
3
2
应用层
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示层
会话层
传输层
网络层
数据链路层
物理层1
应用层
主机到主机层
Internet层
1网络接入层
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP/IP模型与OSI模型的比较
• 相同点
– 两者都是以协议栈的概念为基础
– 协议栈中的协议彼此相互独立
– 下层对上层提供服务
• 不同点
– OSI是先有模型;TCP/IP是先有协议,后有模型
– OSI适用于各种协议栈;TCP/IP只适用于TCP/IP网络
– 层次数量不同
Page 5/31
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
应用层概述
* 路由器使用
应用层
主机到主机层
Internet层
浏览网页
- HTTP
文件传输
- TFTP *
- FTP *
- NFS
E-Mail
- SMTP
远程登陆
- Telnet *
网络管理
- SNMP *
名称管理
- DNS*
网络接入层
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
主机到主机层概述
Transmission Control
Protocol (TCP)
User Datagram
Protocol (UDP)
应用层
主机到主机层
Internet层
网络接入层
面向连接
非面向连接
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP的封装格式
源端口号 目标端口号
32位序列号
32位确认号
4位
首部长
度
保留
(6位)
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
16位窗口大小
16位校验和 16位紧急指针
可选项
数据
Page 8/33
0 15 16 31
发送TCP进程对
应的端口号
目标端接收进
程的端口号
0 ~ 232-1范围内,数据段标
记,用于到目的端对到达
包的重组
0 ~ 232-1范围内,对发送端
的确认信息,告诉发送端这
个序号之前的数据段都收到
了
紧急指针有效位,与
16位紧急指针配合使
用
确认序列号有
效位,表明该
数据包包含确
认信息
为1时,请求重
新建立TCP连接
为1时,请求建
立连接
为1时,数据发
送完毕,请求断
开连接
滑动窗口的大小,
指明本地可接收数
据的字节数
通知接收端立即将数
据提交给用户进程,
不在缓存中停留,等
待更多的数据
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP 顺序号和确认号
源端口 目标端口 …顺序号
#
确认号
#
Source Dest. Seq. Ack.
1028 23 10 1
我发送 #10.
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP 顺序号和确认号
我已收到 #10,
现在我需要 #11.
源端口 目标端口 …
顺序号
#
确认号
#
1028 23
Source Dest.
10
Seq.
1
Ack.
102823
Source Dest.
11
Seq.
1
Ack.
我发送 #10.
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP 顺序号和确认号
源端口 目标端口 …
顺序号
#
确认号
#
1028 23
Source Dest.
11
Seq.
2
Ack.
1028 23
Source Dest.
10
Seq.
1
Ack.
102823
Source Dest.
11
Seq.
1
Ack.
我已收到 #10,
现在我需要 #11.
我发送 #10.
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP 顺序号和确认号
源端口 目标端口 …
顺序号
#
确认号
#
Source Dest. Seq.
1
Ack.
我已收到 #11,
现在我需要 #12.
我发送 #11
Source Dest. Seq. Ack.
1028 23 2
1028 23
Source Dest. Seq.
11
Ack.
23 1028
Source Dest. Seq. Ack.
23 1028 12
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
端口号
TCP
端口号
F
T
P
传输层
T
E
L
N
E
T
D
N
S
S
N
M
P
T
F
T
P
S
M
T
P
UDP
应用层
21 23 25 53 69 161
R
I
P
520
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
发送 SYN
(seq=100 ctl=SYN)
接收 SYN
Host A Host B
TCP 三次握手
1
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
发送 SYN
(seq=100 ctl=SYN)
接收 SYN
发送 SYN, ACK
(seq=300 ack=101 ctl=syn,ack)
Host A Host B
接收 SYN
1
2
TCP 三次握手
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
发送 SYN
(seq=100 ctl=SYN)
接收 SYN
发送 SYN, ACK
(seq=300 ack=101 ctl=syn,ack)
建立会话
(seq=101 ack=301 ctl=ack)
Host A Host B
1
2
3
接收 SYN
TCP 三次握手
TCP连接建立
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP的四次断开
Page 17/33
发送 FIN,请求断开连接
(seq=101 ,ack=301,
ctl=FIN,ACK)
Host A Host B
1
发送 ACK
(seq=301,ack=102
ctl=ACK)
2
4 发送ACK
(seq=102,ack=302
ctl=ACK)
3
发送 FIN,请求断开连接
(seq=301,ack=102
ctl=FIN,ACK)
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP的流控机制-滑动窗口
Page 18/33
Host A Host B
1
2
3
0 3
接收方的缓冲区
0 1 32
发送窗口大小为3
通报窗口大小为1
缓冲区满
应用程序读取
了1个数据段
实际发送窗口大小
变为1
通报窗口大小为3
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
TCP的应用
端口 协议 说明
21 FTP 文件传输协议,用于上传、下载
23 Telnet 用于远程登录,通过连接目标计算机的这一端口,得到验证后
可以远程控制管理目标计算机
25 SMTP 简单邮件传输协议,用于发送邮件
53 DNS 域名服务,当用户输入网站的名称后,由DNS负责将它解析成
IP地址,这个过程中用到的端口号是53
80 HTTP 超文本传输协议,通过HTTP实现网络上超文本的传输
Page 19/33
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
UDP的封装格式
16位源端口号 16位目标端口号
16位UDP长度 16位UDP校验和
数据
Page 20/33
发送端的UDP进程端口
号
接收端的UDP进程端口
号
包含数据的长度,可
以算出数据的结束位
置
UDP的差错控制(可
选)
0 15 16 31
没有顺序号和确认号
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
UDP的使用
端口 协议 说明
69 TFTP 简单文件传输协议
53 DNS 域名服务
123 NTP 网络时间协议
111 RPC 远程过程调用
Page 21/33
DNS服务器支持TCP和UDP两种协议的查询方式,而且端口都是53。
大多数的查询都是UDP查询的,一般需要TCP查询的有两种情况:
①当查询数据较大以至于产生了数据分段,这时,需要利用TCP的
分片能力来进行数据传输。
②当主(master)服务器和辅(slave)服务器之间数据同步通信
的时候。
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
Internet 层概述
OSI 网络层对应的是TCP/IP的internet层
Internet Protocol (IP)
Internet Control Message
Protocol (ICMP)
应用层
传输层
Internet层
网络接入层 w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
IP包头的格式
版本(4) 首部长
度(4)
优先级与服务类型
(8)
总长度(16)
标识符(16) 标志
(3)
段偏移量(13)
TTL(8) 协议号(8) 首部校验和(16)
源地址(32)
目标地址(32)
可选项
数据
Page 23/46
20
字
节
版本字段,IP v4 优先级与服务类
型,提供3层的
QoS
IP包头部长度,
因为长度可变,
因此需要定义
IP数据总长度
上层来的数据到IP层会被分段,这几
个字段用来对数据包进行标识,使在
数据到达目的端重组的时候,不会乱
序
生命周期字段,经过一个
路由器值减1,为0时,数
据包丢弃。为了防止一个
数据包在网络中无限的循
环下去。
协议字段,用来标识封
装的上层数据是UDP还
是TCP,UDP是17,TCP
是6
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
协议域
决定上层协议
Transport
Layer
Internet
Layer
TCP UDP
Protocol
Numbers
IP
176
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
ICMP协议
Application
Transport
Internet
Network
Access
Destination
Unreachable
Echo (Ping)
Other
ICMP
1
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
Ping协议
172.16.3.1 172.16.3.2
检测目的主机在三层是否可达?
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
ARP协议
Address resolution protocol
(ARP)
应用层
传输层
Internet层
网络接入层 w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
ARP协议
172.16.3.1 172.16.3.2
IP: 172.16.3.2 = ???
我需要知道
176.16.3.2的物理
地址.
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
ARP协议
172.16.3.1 172.16.3.2
IP: 172.16.3.2 = ???
我知道你的请求,这是我
的物理地址
我需要知道
176.16.3.2的物理
地址.
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
ARP协议
172.16.3.1
IP: 172.16.3.2
Ethernet: 0800.0020.1111
172.16.3.2
IP: 172.16.3.2 = ???
我知道你的请求,这是我
的物理地址
我需要知道
176.16.3.2的物理
地址.
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
ARP协议
映射 IP Ethernet
Local ARP
172.16.3.1
IP: 172.16.3.2
Ethernet: 0800.0020.1111
172.16.3.2
IP: 172.16.3.2 = ???
我知道你的请求,这是我
的物理地址
我需要知道
176.16.3.2的物理
地址.
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
回顾
1. OSI和TCP/IP层次模型的区别
2. TCP/IP的优点
3. ARP用在什么场合
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n
路由器转发数据包时的封装过程
P
R
E
D
A
S
A
Type Header Data
C
R
C
IP包
以太网帧
Page 33/51
Host A
Host B
A
B
e0
e1
e0
e1
192.168.1.2/24
00-11-12-21-11-11
192.168.1.1/24
00-11-12-21-22-22
10.1.1.1/8
00-11-12-21-33-33
10.1.1.2/8
00-11-12-21-44-44
192.168.2.1/24
00-11-12-21-55-55
192.168.2.2/24
00-11-12-21-66-66
00-11-12-21-22-22
00-11-12-21-11-11
SA:192.168.1.2/24
DA:192.168.2.2/24
00-11-12-21-55-55
00-11-12-21-66-66
P
R
E
D
A
S
A
Type Header Data
C
R
C
IP包
以太网帧
SA:192.168.1.2/24
DA:192.168.2.2/24
00-11-12-21-33-33
00-11-12-21-44-44
P
R
E
D
A
S
A
Type Header Data
C
R
C
IP包
以太网帧
SA:192.168.1.2/24
DA:192.168.2.2/24
w
w
w
.y
e
s
l
a
b
.n
e
t
w
w
w
.y
e
s
l
a
b
.c
o
m
.c
n