资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
By 韩大卫 吉林师范大学主要学习TCP/IP协议族 中传输层,网络层,链路层的协议。 总体思想: 网络间的数据传输是在链路层间实现的, 用户层的数据如果想进入链路层, 要经过逐层封装, 最后封装成以太网帧格式进行发送,这样将不同的数据都包装成以太网帧,实现了在不同网络的数据互联和通信。 例如:一个用户层数据 data 经过传输层TCP协议 data 经过网络层IP协议TCP协议 data 链路层 以太网祯首部IP协议TCP协议 dataCRC 以太网帧格式: 目的MAC地址(6字节) 源MAC地址(6字节)帧类型(2字节) data(461500)CRC(4字节) 常见帧类型:0800: IP协议 0806: ARP协议 IP报文格式: 4bit协议格式 4bit首部长度8bit TOS16bitIP报文总长度 16bitIP报文标志16bit分片信息 8bitTTL8bit上层协议16bit检验和 32bit源IP地址 32bit目的IP地址 data 上层协议:06: TCP协议 01: ICMP协议 17:UDP协议 TCP段格式: 16bit源端口号16bit目的端口号 32bit序列号 32bit确认序号 4bitTCP首部长度 6bit保留 6bit标志位 。ACK 。 。 SYN FIN16bit窗口大小 16bit检验和16bit紧急指针 可选项 data UDP段格式: 16bit源端口号16bit目的端口号 16bitUDP长度16bit检验和 data TCP是面向连接的协议,UDP是面向不连接的协议。 TCP: 提供可靠的,有连接的传输 UDP:提供不可靠的,无连接的传输 TCP是面向连接的协议, 所以在双方通信前要建立连接, 建立连接的过程分为三部,简称三次握手: 第一次:A 发送 SYN,1000(0),mss 第二次:B 发送 SYN, 8000(0),ACK 1001, mss 第三此:A发送 ACK 8001 从TCP状态迁移图中得知, 这个过程中客户端的状态变化是: CLOSED-SYS_SENT-ESTABLISHED 服务器端: CLOSED-LISTEN-SYS_RCVD-ESTABLISHED 实例: IP 192.168.10.50.50258 123.125.115.43.80: Flags S, seq 2916403917, win 14600, options mss 1460,sackOK,TS val 1163706 ecr 0,nop,wscale 4, length 0 0x0000: 0022 3f11 74b2 ac81 1250 b016 0800 4500 .“?.t.P.E. 0x0010: 003c 0b77 4000 4006 75c2 c0a8 0a32 7b7d . 192.168.10.50.50258: Flags S., seq 3002973477, ack 2916403918, win 14600, options mss 1452,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop, length 0 0x0000: ac81 1250 b016 0022 3f11 74b2 0800 4500 .P.“?.t.E. 0x0010: 003c 0b77 4000 3606 7fc2 7b7d 732b c0a8 . 123.125.115.43.80: Flags ., ack 1, win 14600, length 0 0x0000: 0022 3f11 74b2 ac81 1250 b016 0800 4500 .“?.t.P.E. 0x0010: 0028 0b78 4000 4006 75d5 c0a8 0a32 7b7d .(.x.u.2 0x0020: 732b c452 0050 add4 cace b2fd bd26 5010 s+.R.P.&P./5010 0x0030: 3908 b99d 0000 本机向服务器发送 至此,本机与服务器双方的连接就连立起来了。 关闭连接是分为四部, 简称四次握手。 实例如下: IP 192.168.10.50.39309 123.125.115.126.80: Flags F., seq 1094, ack 188, win 15544, length 0 0x0000: 0022 3f11 74b2 ac81 1250 b016 0800 4500 .“?.t.P.E. 0x0010: 0028 a994 4000 4006 d765 c0a8 0a32 7b7d .(.e.2 0x0020: 737e 998d 0050 2b7a e5e2 4eea 2fb6 5011 s.P+z.N./.P. 0x0030: 3cb8 b9f0 0000 192.168.10.50.39309: Flags ., ack 1095, win 7651, length 0 0x0000: ac81 1250 b016 0022 3f11 74b2 0800 4500 .P.“?.t.E. 0x0010: 0028 e970 4000 3306 a489 7b7d 737e c0a8 .(.p.3.s. 0x0020: 0a32 0050 998d 4eea 2fb6 2b7a e5e3 5010 .2.P.N./.+z.P. 0x0030: 1de3 ae3f 0000 .?. 目标地址发送了5010, 对本机的请求回复ACK确认。 14:38:34.396202 IP 123.125.115.126.80 192.168.10.50.39309: Flags F., seq 188, ack 1095, win 7651, length 0 0x0000: ac81 1250 b016 0022 3f11 74b2 0800 4500 .P.“?.t.E. 0x0010: 0028 e972 4000 3306 a487 7b7d 737e c0a8 .(.r.3.s. 0x0020: 0a32 0050 998d 4eea 2fb6 2b7a e5e3 5011 .2.P.N./.+z.P. 0x0030: 1de3 ae3e 0000 . 目标地址也发送了FIN请求。 14:38:34.396235 IP 192.168.10.50.39309 123.125.115.126.80: Flags ., ack 189, win 15544, length 0 0x0000: 0022 3f11 74b2 ac81 1250 b016 0800 4500 .“?.t.P.E. 0x0010: 0028 0000 4000 4006 80fa c0a8 0a32 7b7d .(.2 0x0020: 737e 998d 0050 2b7a e5e3 4eea 2fb7 5010 s.P+z.N./.P. 0x0030: 3cb8 8f69 0000 本机回应ACK, 结束了双方的通信。 在TCP状态迁移图中, 客户端的状态变化是: ESTABLISHED-FIN_WAIT1-FIN_WAIT2-TIME_WAIT-CLOSED 服务器状态变化: ESTABLISHED-CLOSE_WAIT-LAST_ACK-CLOSED 问题1: 为什么建立连接时需要三次握手, 关闭连接时需要四次? 从TCP状态迁移图中得知, 当服务器是CLOSE_WAIT这个状态时,可能还有数据要传输,稍后再关闭,数据传输全部完成后发送FIN,进入LAST_ACK状态。 一个实例:在ping 192.168.10.1 时, 如果arp中有没此地址的缓存表 那么需要发送ARP数据包在局域网内进行广播, 寻找目的MAC地址, 对于广播范围的控制,可使用VLAN技术。 ARP协议: IP地址和对应MAC地址映射协议。 ARP协议格式: 16bit硬件类型(0x0001为MAC地址)16bit协议类型(0x0080为 IP协议) 8bit硬件地址长度(MAC为6) 8bit协议长度(IPv4为4)8bit操作码 源硬件地址 源IP地址 目的硬件地址 目的IP地址 #tcpdump -ni wlan0 -XX ARP, Request who-has 192.168.10.50 tell 192.168.10.1, length 28 0x0000: ffff ffff ffff 0022 3f11 74b2 0806 0001 .“?.t./0806是ARP请求/应答 0x0010: 0800 0604 0001 0022 3f11 74b2 c0a8 0a01 .“?.t./0001 是ARP请求 0x0020: 0000 0000 0000 c0a8 0a32 .2 ARP, Reply 192.168.10.50 is-at ac:81:12:50:b0:16, length 28 0x0000: 0022 3f11 74b2 ac81 1250 b016 0806 0001 .“?.t.P. 0x0010: 0800 0604 0002 ac81 1250 b016 c0a8 0a32 .P.2/0002 是 ARP应答 0x0020: 0022 3f11 74b2 c0a8 0a01 .“?.t. 在内核执行ping时,对IP地址在路由表中进行IP选路, # route -n 内核 IP 路由表 目标 网关 子网掩码 标志 跃点 引用 使用 接口 0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 wlan0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0 192.168.10.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0 先匹配本机地址,再匹配网络地址, 最后交给默认网关, 由网关进行路由。 如果IP地址 是本机地址,那么经过lo回环到本机: ping 192.168.10.50 PING 192.168.10.50 (192.168.10.50) 56(84) bytes of data.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号