51
第 第 第 TCP/IP 第第

第3讲 Tcpip协议栈

  • Upload
    fl-yu

  • View
    156

  • Download
    0

Tags:

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 第3讲 Tcpip协议栈

第 三 讲

TCP/IP 协议第 三 讲

TCP/IP 协议

Page 2: 第3讲 Tcpip协议栈

介绍 TCP/IP介绍 TCP/IP

主机

Internet

TCP/IP

主机

优点:发展历史悠久、通用性好,一个成熟的商业化操作系统都支持 TCP/IP 协议。

(如: Unix 、 Linux 、 Windows ),否则它在市场上就无法销售。

Page 3: 第3讲 Tcpip协议栈

TCP/IP 协议栈TCP/IP 协议栈

7

6

5

4

3

2

应用层

表示层

会话层

传输层

Network

数据链路层

物理层1

应用层

主机到主机层

Internet

网络接入层

Page 4: 第3讲 Tcpip协议栈

应用层 Overview应用层 Overview

应用层

主机到主机层

Internet

网络接入层

文件传输- TFTP *- FTP *

E-Mail - SMTP远程登陆

- Telnet *网络管理 - SNMP * 名称管理

- DNS*

文件传输- TFTP *- FTP *

E-Mail - SMTP远程登陆

- Telnet *网络管理 - SNMP * 名称管理

- DNS*

Page 5: 第3讲 Tcpip协议栈

主机到主机层 Overview主机到主机层 Overview

Transmission ControlProtocol (TCP) 传输控制协议

User Datagram Protocol (UDP) 用户数据报协议

Transmission ControlProtocol (TCP) 传输控制协议

User Datagram Protocol (UDP) 用户数据报协议

应用层

主机到主机层

Internet

网络接入层

面向连接、可靠的

无连接,不可靠的

Page 6: 第3讲 Tcpip协议栈

TCP 传输控制协议TCP 传输控制协议

•面向连接的–先建立连接,后传数据–通过三次握手建立连接

•可靠的–发送数据后,必须等待确认后才继续发送–等不到确认,会重传数据

电话

Page 7: 第3讲 Tcpip协议栈

TCP 段格式 TCP 段格式

原端口号 (16) 目标端口 (16)

发送请求序列号 (32)

头部长度 (4)

应答序列号 (32)

保留位 (6) 代码位 (6) 窗口 (16)

校验码 (16) Urgent(16)

附加选项 (0 or 32 )

数据

20Bytes

Bit 0 Bit 15 Bit 16 Bit 31

(标识请求还是应答)

(附加选项一般只用到 20 个字节左右)

Page 8: 第3讲 Tcpip协议栈

端口号端口号

• 传输层主要是形成两端的收发进程的对应关系,对应关系必须由端口号来标识。 如:服务端发送一个应用过去,收的一端必须有一个对应的应用接收。

• 所以端口号就有一个标识即源端口号、目地端口号。源端口号表示 从什么地方发的;目地端口号表示对方的接收进程号。• 端口号的编排方法( RFC 规定)

TCP/IP 协议中应用层大多数为 Client / Server 模式

Server 端要求凡 <=255 的必须特别申请,因被预留给了特别著名的应用。 凡在 256—1024 服务器的端口号被预留给了特别著名的厂商 或具有影响力的应用程序。所以 1024 之前的端口号必须向 Internet 标准组织申请, 1024 之后可使用。

任何一个 Server 端对应的 Client 端一般都用 1024 以后(随机数)。

Page 9: 第3讲 Tcpip协议栈

端口号端口号

TCP

端口号

FTP

传输层

TELNET

DNS

SNMP

TFTP

SMTP

UDP

应用层

2121 2323 2525 5353 6969 161161

RIP

520520

2020传数据

传输控制

基于 TCP 协议的 基于 UDP 协议的

Page 10: 第3讲 Tcpip协议栈

TCP 端口号TCP 端口号

原端口原端口 目标端口目标端口 ……

主机 A

10281028 2323 ……原端口 目标端口

主机 ZTelnet Z

目标端口 = 23.发送包到我的Telnet 的应用

Page 11: 第3讲 Tcpip协议栈

发送同步请求 (seq=100 ctl=SYN)

SYN 的接收

主机 A 主机 B

TCP 三次握手TCP 三次握手

1

Page 12: 第3讲 Tcpip协议栈

发送同步请求 (seq=100 ctl=SYN)

SYN 的接收

发送请求和应答 (seq=300 ack=101 ctl=syn,ack)

主机 A 主机 B

SYN 的接收

1

2

TCP 三次握手连接TCP 三次握手连接

Page 13: 第3讲 Tcpip协议栈

发送请求 (seq=100 ctl=SYN)

SYN 的接收

发送请求和应答 (seq=300 ack=101 ctl=syn,ack)

连接建立(seq=101 ack=301 ctl=ack)

Host A Host B

1

2

3

SYN 的接收

TCP 三次握手连接TCP 三次握手连接

Page 14: 第3讲 Tcpip协议栈

TCP 简单的确认TCP 简单的确认

窗口值 = 1

发送方 接收方

Page 15: 第3讲 Tcpip协议栈

TCP 简单的确认 TCP 简单的确认 发送方 接收方

发送 1 接收 1

窗口值 = 1

Page 16: 第3讲 Tcpip协议栈

TCP 简单的确认TCP 简单的确认 发送方 接收方

发送 1 接收 1

接收确认 2 发送确认 2

窗口值 = 1

Page 17: 第3讲 Tcpip协议栈

TCP 简单的确认TCP 简单的确认 发送方 接收方

发送 1 接收 1

接收确认 2 发送确认 2

发送 2接收 2

窗口值 = 1

Page 18: 第3讲 Tcpip协议栈

TCP 简单的确认TCP 简单的确认 发送方 接收方

发送 1 接收 1

接收确认 2 发送确认 2

发送 2接收 2

接收确认 3发送确认 3

窗口值 = 1

Page 19: 第3讲 Tcpip协议栈

TCP 简单的确认TCP 简单的确认 发送方 接收方

发送 1 接收 1

接收确认 2 发送确认 2

发送 2接收 2

接受确认 3发送确认 3

发送 3接收 3

窗口值 = 1

Page 20: 第3讲 Tcpip协议栈

发送方 接收方发送 1 接受 1

接受确认 2 发送确认 2

发送 2接收 2

接收确认 3发送确认 3

发送 3接收 3

接收确认 4 发送 4

TCP 简单的确认TCP 简单的确认

窗口值 = 1

Page 21: 第3讲 Tcpip协议栈

TCP 请求和应答号TCP 请求和应答号

源端口号源端口号 目标端口号

目标端口号

……同步请求#

同步请求#

确认应答#

确认应答#

Source Dest. Seq. Ack.

1028 23 10 1

我正好发送第 #10.

Page 22: 第3讲 Tcpip协议栈

TCP 请求和应答号

我正好要 #10,现在需要 #11.

10281028 2323

Source Dest.

10101010

Seq.

11

Ack.

102810282323

Source Dest.

11111111

Seq.

11

Ack.

我正好发送第 #10.

源端口号源端口号 目标端口号

目标端口号

……同步请求#

同步请求#

确认应答#

确认应答#

Page 23: 第3讲 Tcpip协议栈

TCP 请求和应答号TCP 请求和应答号

10281028 2323

Source Dest.

11111111

Seq.

22

Ack.

10281028 2323

Source Dest.

10101010

Seq.

11

Ack.

102810282323

Source Dest.

11111111

Seq.

11

Ack.

我正好要 #10,现在需要 #11.

我正好发送第 #10.

源端口号源端口号 目标端口号

目标端口号

……同步请求#

同步请求#

确认应答#

确认应答#

Page 24: 第3讲 Tcpip协议栈

TCP 请求和应答号TCP 请求和应答号

10281028 2323

Source Dest.

11111111

Seq.

22

Ack.

10281028 2323

Source Dest.

10101010

Seq.

11

Ack.

102810282323

Source Dest.

11111111

Seq.

11

Ack.

102810282323

Source Dest.

12121212

Seq.

22

Ack.

源端口号源端口号 目标端口号

目标端口号

……同步请求#

同步请求#

确认应答#

确认应答#

我正好要 #10,现在需要 #11.

我正好发送第 #10.

Page 25: 第3讲 Tcpip协议栈

TCP WindowingTCP Windowing

发送方 接收方

Page 26: 第3讲 Tcpip协议栈

TCP WindowingTCP Windowing

Window size = 3Send 2

Window size = 3Send 1

Window size = 3Send 3

发送方 接收方

Page 27: 第3讲 Tcpip协议栈

Window size = 3Send 2

TCP WindowingTCP Windowing

Window size = 3Send 1

Window size = 3Send 3

ACK 3Window size = 2 第 3 个包丢了

发送方 接收方

Page 28: 第3讲 Tcpip协议栈

Window size = 3Send 2

TCP WindowingTCP Windowing

Window size = 3Send 1

Window size = 3Send 3

ACK 3Window size = 2 第 3 个包丢了

Window size = 3Send 4

Window size = 3Send 3

发送方 接收方

Page 29: 第3讲 Tcpip协议栈

Window size = 3Send 2

TCP WindowingTCP Windowing

Window size = 3Send 1

Window size = 3Send 3

ACK 3Window size = 2

Window size = 3Send 4

Window size = 3Send 3

ACK 5Window size = 2

第 3 个包丢了

发送方 接收方

Page 30: 第3讲 Tcpip协议栈

UDP 用户数据报协议UDP 用户数据报协议

•无连接–发送数据之前不需要建立连接–直接发送

•不可靠–没有发送确认–没有重传机制(由上层协议控制纠错重传)

•Segment 尺寸小,发送速度快

传呼,短信

Page 31: 第3讲 Tcpip协议栈

不需要连接、应答、三次握手,只需要两边的应用有对应的关系(端口号)和长度标识与校验(只做头部校验)所以 UDP 一般用于报文信息(通知状态的好坏,数据量小、效率高)

UDP 段的格式UDP 段的格式

源端口 (16) 目标端口 (16)

长度 (16)

数据

1Bit 0 Bit 15 Bit 16 Bit 31

校验码 (16)

8Bytes

Page 32: 第3讲 Tcpip协议栈

TCP 段格式 TCP 段格式

原端口号 (16) 目标端口 (16)

发送请求序列号 (32)

头部长度 (4)

应答序列号 (32)

保留位 (6) 代码位 (6) 窗口 (16)

校验码 (16) Urgent(16)

附加选项 (0 or 32 )

数据

20Bytes

Bit 0 Bit 15 Bit 16 Bit 31

(标识请求还是应答)

(附加选项一般只用到 20 个字节左右)

Page 33: 第3讲 Tcpip协议栈

网络层 ( IP ) Overview网络层 ( IP ) Overview

TCP/IP internet 层对应 OSI 网络层

Internet Protocol (IP) 网际协议

Internet Control MessageProtocol (ICMP) 控制消息协议

Address ResolutionProtocol (ARP) 地址解析协议

Reverse Address 反向地址解析Resolution Protocol (RARP)

Internet Protocol (IP) 网际协议

Internet Control MessageProtocol (ICMP) 控制消息协议

Address ResolutionProtocol (ARP) 地址解析协议

Reverse Address 反向地址解析Resolution Protocol (RARP)

应用层

传输层

Internet

数据链路层

物理层

Page 34: 第3讲 Tcpip协议栈

IP 层的主要协议IP 层的主要协议

•IP 协议 -----Internet Protocol

–控制数据的转发•ICMP 协议 ----Internet 控制消息协议–测试网络连通性的协议,返回目的不可到达、 Echo 、超时等消息–Ping , Trceroute

•ARP 协议 ----地址解析协议•RARP 协议 ---- 反向地址解析协议

Page 35: 第3讲 Tcpip协议栈

IP 数据包格式IP 数据包格式

版本(4)

目标 IP 地址 (32)

附加选项

数据

1Bit 0 Bit 15 Bit 16 Bit 31

头部长度 (4) 优先及或服务类型 (8) IP 包长度 (16)

拆分部分标识 (16)规定最大值是否要拆分 (3) Fragment offset (13)

存活时间 TTL (8) 协议 (8) 头部校验位 (16)

源 IP 地址 (32)

20Bytes

包头长度

已拆分的数量包头

Page 36: 第3讲 Tcpip协议栈

协议范围协议范围

传输层

网络层

TCP UDP

协议号

IP

176

Page 37: 第3讲 Tcpip协议栈

Internet 控制消息协议Internet 控制消息协议

应用层

传输层

Internet

数据链路层

物理层

不可达目标

显示输出 (Ping)

其他

ICMP1

ICMP 是 IP 协议中的一种协议,不是用于传数据而是用于传递 IP 网络层的一些控制、查询诊断、错误信息,维护用。

主要分为两类:查询与报错信息

Echo request :查询与对端通与不通,目标如果是按照标准的 TCP/IP 协议一定会按源地址返回一个 echo reply 的信息

如 Ping 、 tracert 就是利用 echo request与 echo reply

报错用的如 Destination Unreachable 目标主机不可达(不在同一网段)目标网络不可达(路由器没此路由)目标协议不可达(防火墙或策略不允许此协议通过)

如:一个 Router把一个包发送到某个目的地,但路由表中无此去向的路由,它将此包将丢掉,之后报一个错误(错误信息按照源包的源地址作为抱错的目的地址返回错误信息——目标不可达)

路由器中出现 …… .. 表示 time out uuuuu 表示对端有 ICMP设备返回信息不可达

有时 PC 机没有设网关跨网段 Ping ,出现目标主机不可达是自己的 ICMP 协议栈向你报告对端主机不可达

Page 38: 第3讲 Tcpip协议栈

ARP 协议ARP 协议

172.16.3.1 172.16.3.2

IP: 172.16.3.2 = ???IP: 172.16.3.2 = ???

我需要知道 176.16.3.2 的物理地址.

Page 39: 第3讲 Tcpip协议栈

ARP 协议ARP 协议

172.16.3.1 172.16.3.2

IP: 172.16.3.2 = ???IP: 172.16.3.2 = ???

我知道你的请求,这是我的物理地址

我需要知道 176.16.3.2 的物理地址.

Page 40: 第3讲 Tcpip协议栈

ARP 协议ARP 协议

172.16.3.1

IP: 172.16.3.2 Ethernet: 0800.0020.1111 IP: 172.16.3.2 Ethernet: 0800.0020.1111

172.16.3.2

IP: 172.16.3.2 = ???IP: 172.16.3.2 = ???

我知道你的请求,这是我的物理地址

我需要知道 176.16.3.2 的物理地址.

Page 41: 第3讲 Tcpip协议栈

ARP 协议ARP 协议

映射 IP Ethernet

Local ARP

172.16.3.1

IP: 172.16.3.2 Ethernet: 0800.0020.1111 IP: 172.16.3.2 Ethernet: 0800.0020.1111

172.16.3.2

IP: 172.16.3.2 = ???IP: 172.16.3.2 = ???

我知道你的请求,这是我的物理地址

我需要知道 176.16.3.2 的物理地址.

Page 42: 第3讲 Tcpip协议栈

RARP 协议RARP 协议

Ethernet: 0800.0020.1111 IP = ???Ethernet: 0800.0020.1111 IP = ???

我的地址是多少?

Page 43: 第3讲 Tcpip协议栈

RARP 协议RARP 协议

Ethernet: 0800.0020.1111 IP = ???Ethernet: 0800.0020.1111 IP = ???

我的地址是多少?

我听到了广播你的地址是 172.16.3.25.

Page 44: 第3讲 Tcpip协议栈

RARP 协议RARP 协议

Ethernet: 0800.0020.1111IP: 172.16.3.25

Ethernet: 0800.0020.1111IP: 172.16.3.25

Ethernet: 0800.0020.1111 IP = ???Ethernet: 0800.0020.1111 IP = ???

我的地址是多少?

我听到了广播你的地址是 172.16.3.25.

Page 45: 第3讲 Tcpip协议栈

RARP 协议RARP 协议

映射 Ethernet IP

Ethernet: 0800.0020.1111IP: 172.16.3.25

Ethernet: 0800.0020.1111IP: 172.16.3.25

Ethernet: 0800.0020.1111 IP = ???Ethernet: 0800.0020.1111 IP = ???

我的地址是多少?

我听到了广播你的地址是 172.16.3.25.

Page 46: 第3讲 Tcpip协议栈

Ping命令Ping命令Ping 用于确定网络的连通性。命令格式:Ping 主机名Ping 域名Ping IP 地址

Page 47: 第3讲 Tcpip协议栈

Ping命令Ping命令

一般情况下,用户可以通过使用一系列 Ping命令来查找问题出在什么地方,或检验网络运行的情况。典型的检测次序及对应的可能故障:

① ping 127.0.0.1如果测试成功,表明网卡、 TCP/IP协议的安装、 IP地址、子网掩码的设

置正常。如果测试不成功,就表示 TCP/IP的安装或运行存在某些最基本的问题。

② ping 本机 IP

如果测试不成功,则表示本地配置或安装存在问题,应当对网络设备和通讯介质进行测试、检查并排除。

Page 48: 第3讲 Tcpip协议栈

Ping命令Ping命令

③ ping局域网内其他 IP如果测试成功,表明本地网络中的网卡和载体运

行正确。但如果收到 0 个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。 ④ ping 网关 IP这个命令如果应答正确,表示局域网中的网关路

由器正在运行并能够做出应答。 ⑤ ping 远程 IP如果收到正确应答,表示成功的使用了缺省网关

。 对 于拨号 上 网 用 户 则 表 示能够成功的访问Internet 。

Page 49: 第3讲 Tcpip协议栈

Ping命令Ping命令

如果上面所列出的所有 Ping命令都能正常运行,那么计算机进行本地和远程通信基本上就没有问题了。但是,这些命令的成功并不表示你所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。

Ping 命令的常用参数选项 ping IP -t :连续对 IP 地址执行 Ping命令,直到被用户以 Ctrl+C 中断。 ping IP -l 2000 :指定 Ping命令中的数据长度为 2000 字节,而不是缺省

的 32 字节。 ping IP -n :执行特定次数的 Ping命令。

Page 50: 第3讲 Tcpip协议栈

traceroute命令traceroute命令

这个命令主要用来显示数据包到达目的主机所经过的路径。通过执行一个traceroute 到对方主机的命令之后,结果返回数据包到达目的主机前所经历的路径详细信息,并显示到达每个路径所消耗的时间。

这个命令同 ping命令类似,但它所看到的信息要比 ping命令详细得多,它能反馈显示送出的到某一站点的请求数据包所走的全部路径,以及通过该路由的 IP 地址,通过该 IP 的时间是多少。

traceroute命令还可以用来查看网络在连接站点时经过的步骤或采取哪种路线,如果是网络出现故障,就可以通过这条命令来查看是在哪儿出现问题的。例如可以运行 tuaceroute 10.1.1.1 ,就将看到网络在经过几个连接之后所到达的目的地,也就知道网络连接所经历的过程。图给出了 traceroute命令的一个实例。

如果输出为“ *”,则说明转发分组失败Traceroute 的默认最大 TTL = 30

Page 51: 第3讲 Tcpip协议栈

traceroute命令traceroute命令

图 Tracert 命令