TCP建立会话的过程----------三次握手
三次挥手不允许携带数据
1.客户端向服务器端发送SYN请求建立连接,并置序号为x(表明起始顺序,不重要所以是一个随机值)
2.服务端确认请求,ack(确认序号)=x+1,因为会话是双向的同时服务端也会发送一个SYN请求给客户端 所以SYN=1,并置序号为y(服务端给客户端的初始序号)
3.客户端确认请求,确认序号(ack=y+1)
seq是要发送的第一个字节的序号,ack等于他收到的seq序列号加上字节流数据的长度,他代表期望收到的下一个字节的序号,同时他也代表这个序号前的字节我都已经收到了。
TCP断开会话的过程----------四次挥手
挥手牵涉到数据传输,四次挥手允许携带数据 1.客户端告诉服务端我想要断开连接,序号为seq=u
2.服务端确认请求,序号为seq=v。确认序号ack=u+1,表示是在收到客户端报文的基础上,将其序号seq值加1作为本段报文确认号ack的值
3.标记位为FIN,ACK,表示“已经准备好释放连接了”。注意:这里的ACK并不是确认收到服务器端报文的确认报文。序号为seq=w,确认号为ack=u+1;表示是在收到客户端报文的基础上,将其序号seq值加1作为本段报文确认号ack的值。
4.客户端确认请求,序号为seq=u+1;表示是在收到了服务器端报文的基础上,将其确认号Ack值作为本段报文序号的值。确认号为ack=w+1;表示是在收到了服务器端报文的基础上,将其序号seq值作为本段报文确认号的值。
为什么说TCP的传输是可靠的,UPD的传输是"尽力而为"
TCP确保可靠性的机制-------------确认机制、重传机制、排序机制、流控机制
确认机制 :发送一个消息收到了需要进行确认 重传机制 :发了一个信息没有收到会继续发送 排序机制 : 流控机制: 是不断变化的,是一个动态的,称这种机制为:滑动窗口机制;牵扯到窗口大小(16位) 每发一个数据包,都需要回akc -----太慢了 流控:A向B发了10个数据包 ------B回一个ACK
B回复如果跟我A发的窗口值一样 A会调整窗口值(把窗口值调大)
假如A发了10个数据包 ,窗口值为10 B只收到了7个数据,回复ACK=1 确认窗口值为7 ack=8 A看到了B只能收到7个,把窗口值调为7,从8开始发送
IP协议----------把ip地址封装到数据包中
4位版本 :标识目前采用的IP协议的版本号。一般的值为0100(IPv4) 4位首部长度 :这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= IP头部长度(单位为bit)/(8 * 4),因此,一个IP包头的长度最长为“1111”,即15*4=60个字节。IP包头最小长度为20字节。 8位服务类型 :特殊字段,数据包在发送过程中,需要特殊服务时用,8位 按位被如下定义 PPP DTRC0 PPP:定义包的优先级,取值越大数据越重要 000 普通 (Routine) 001 优先的 (Priority) 010 立即的发送 (Immediate) 011 闪电式的 (Flash) 100 比闪电还闪电式的 (Flash Override) 101 CRI/TIC/ECP(找不到这个词的翻译) 110 网间控制 (Internetwork Control) 111 网络控制 (Network Control) D 时延: 0:普通 1:延迟尽量小 T 吞吐量: 0:普通 1:流量尽量大 R 可靠性: 0:普通 1:可靠性尽量大 M 传输成本: 0:普通 1:成本尽量小 0 最后一位被保留,恒定为0 16位总长度 :头部和数据, 以字节为单位计算的IP包的长度 (包括头部和数据),所以IP包最大长度65535字节。 8位生存时间(TTL) : ttl数据包每经过一个路由器的转发,ttl值将减一,为0时则该数据包不在被路由器转发,将直接丢弃。ttl初始值跟操作系统有关系----------三种值64,128,255,使用ping命令时可以查看到,在64以下初始值就是6,在64和128之间初始值就是128,在128和255之间就是初始值255 8位协议 :标识了上层所使用的协议 16位首部校验和: 校验比较低,只校验头部,不校验数据
TCP的分段和IP的分片
二层(数据帧结构)规定了数据部分不能超过1500个字节
这种限制称为MTU--------------最大传输单元----------1500字节(默认值,可修改)
如果从上层传过来的数据包大于了1500个字节,网络层就需要分片
因为TCP可以分段,为了确保网络层重复加工(分片操作),它会把每一个数据包控制在1460个字节以内(传输层最小20个字节,网络层最小20个字节)
这种限制称为MSS-------------最大段长度--------------1460字节,协商MSS时最大段长度是较小的那个字节
传输层用的TCP协议网络层就不需要分片了,但是传输层用的是UDP协议,网络层可能就需要分片了 16位标识 :所有属于同一个数据包分出来的不同片,它们具有相同的标识 3位标志 :
Reserved bit:保留位,暂时都是值0的 Don’t fragment:不分片,如果置1就表示这个包是一个没有分片的包,如果为0就表示这是一个分片的包 More fragments:更多的片,如果置1,代表我这个数据片后面还有数据片,我不是最后一个数据片,置0表示就是最后一个数据片或者没有分片。
13位偏移量 :用来排序用的,表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包
eNSP
ENSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化操作的网络仿真工具平台,主要对企业网络路由器、交换机进行软件仿真,完美呈现真实设备实景,支持大型网络模拟,让广大用户有机会在没有真实设备的情况下能够模拟演练,学习网络技术。
试验:搭建DHCP服务,WEB服务,以及DNS服务,实现跨域之间的访问
所用到的设备: 1个路由器(AR2220)、两个交换机(S5700)(S3700)、4个PC、一个客户端、2个服务端、双绞线 试验步骤: 1.划分区域 2.分配网段 3.分配ip ( 先给路由器配置ip,因为路由器一般手动配置的因为路由器的ip一般不会变,路由器有ip所需要用到的网关) 端口分为两个(最好是同端口的相连百兆口连百兆口,千兆口连千兆口) Ethernet------------百兆口 100bps GE----------------千兆口 1000bps 新建拓扑如下,并启动设备 配置路由器(实现跨区域访问) 路由器中的权限是根据视图来划分的(在高权限视图可以执行查看操作): 用户视图 权限最低,只能做一些查看配置的操作,标记<> 系统视图 仅能做一些全局类的信息,标记[] 应用视图 对应用进行单独的配置,标记[-] 查看路由器配置的ip情况:<Huawei>display ip interface brief physical为up具有物理层面的通信条件(有没有网线) Protocal(协议)配了ip地址就会显示up physical和Protocal都为up 才能通信 提升权限,从用户视图到系统视图<Huawei>system-view 使用tab键可以补全命令 后面加?可以列出你可以跟那些参数 及命令 改路由器名称:[Huawei]sysname a ------有多台路由器最好改名 undo删除配置的ip信息(基本所有删除都可以在前面加上undo进行删除) [a-GigabitEthernet0/0/0]undo ip address 192.168.1.1 24 查看当前视图你所做的所有配置操作[a-GigabitEthernet0/0/0]display this 查看这个设备你所做的所有配置操作<a>display current-configuration 进入接口视图,配置ip 路由器最好是可用ip的第一个 或者 最后一个地址 [a]interface GigabitEthernet 0/0/0 进入接口视图 [a-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 配置ip地址和子网掩码 [a-GigabitEthernet0/0/0]quit 返回上一级视图 当前所有的配置操作存在路由器的缓存当中,相当于电脑中的运行内存,关机就没有了 使用save 把你的操作保存到闪存当中,掉电不丢失(必须在用户视图执行) <a>display saved-configuration 查看闪存的信息
给pc配置ip地址、测试可不可以互相通信
配置web服务
配置DNS协议-------------域名解析协议 DNS域名解析协议UDP/TCP 53端口,是一个C/S 架构 域名结构:www.baidu.com-------------从右往左,域名等级逐渐减少 为了符合域名结构,DNS服务器按照联机分布式数据库系统来部署 根服务器记录的是顶级域名服务器的ip等信息 顶级域名服务器记录的是权限域名服务器的ip等信息(依次向下) DNS查询方式-------递归查询,迭代查询 递归查找:先找本地域名服务器,本地域名服务器先到自己的缓存里面查,有没有对应域名的ip地址,有直接给你,如果没有,本地服务器会找其他服务器问,直到问道为止返回给你的主机 迭代查找:先找本地域名服务器,本地域名服务器先到自己的缓存里面查,有没有对应域名的ip地址,有直接给你,如果没有,它会把有可能直到这个域名服务器的ip给你,让你自己去找。 在我们dns查询过程中:pc会先去找本地域名服务器通过递归的方式查找,本地域名服务器,本地域名服务器先到自己的缓存里面查,有没有对应域名的ip地址,有直接给你,如果没有,会采用迭代查询,先找根域名服务器、跟服务器会给你顶级域名服务器ip、然后你又去找顶级域名服务器,它会给你二级服务器的ip地址、依次类推知道最后找了本地域名服务器才返回给我们pc 本地主机访问------递归查询 使用udp 53 本地域名服务器------迭代查询 使用tcp 53
DHCP-----动态主机配置协议 DHCP动态主机配置协议udp 67/68端口,是一个C/S 架构 dhcp对性能要求比较低,自己的电脑都可以做dhcp服务器 dhcp客服端----udp 68 dhcp服务器----udp 67 一、电脑首次ip地址 第一次会发一个广播包,找到dhcp在哪 DHCP客户端------------向DHCP服务器:发送一个DHCP-Discover包 DHCP-Discover包的东西------广播包 源端口:68 ,目标端口:67,源ip:0.0.0.0 目标ip:255.255.255.255 源MAC:自己的MAC 目标MAC:FFFF-FFFF-FFFF DHCP服务器给-----DHCP客户度:回消息 DHCP-Offer DHCP-Offer会携带一个可用的ip地址,并暂时为你保留 DHCP-Offer包 有可能是单播,也有可能是广播形式发送给你 一个广播域里面有很多个dhcp服务器,会收到很多个ip地址,造成冲突,所以需要发送DHCP-Offer包,由你选择,DHCP会选择先到的DHCp-Offer包。 DHCP-offer字段中有一个交易码,区别是不是你的包 dhcp有一个租期:华为设备默认的租期24小时 T1时间------租期的50%----12h
? DHCP客户端:DHCP—request包----单播包 客户端发送一个单播包(request包)给服务器
T2时间------租期的87.5%-----21h
DHCP客户端:DHCP—request包----广播包
租期到了没有续租成功需要返还ip 二、再次获取ip地址 会直接发送:DHCP—request包----广播包----------之前的那个ip地址 DHCP-request一定是一个广播包,请求ip地址,告诉其他的dhcp服务器,我有ip了。需要标明你选择dhcp的信息。 DHCP服务器-------------DHCP客户端:DHCP------ACK确认包----------单播或者广播包 如果服务端回复的是DHCP-NACK 你需要重新获取ip地址(首次获取的方式) dhcp-release 客户端主动释放ip地址发的数据包 DHCP配置: 在路由器中配置最合适因为:路由器特点就是跨广播域,所以他可以同时给多个域提供服务 1.开启DHCP服务[a]dhcp enable 2.创建一个ip地址池[a]ip pool aa 3.配置ip地址池 [a-ip-pool-aa]network 192.168.1.0 mask 24 ----将192.168.1.0/24网段放入地址池 4.配置网关[a-ip-pool-aa]gateway-list 192.168.1.1 5.配置dns[a-ip-pool-aa]dns-list 114.114.114.114 8.8.8.8 都是dns根服务器 6.在接口选择全局配置 [a]interface GigabitEthernet 0/0/0、[a-GigabitEthernet0/0/0]dhcp select global 在创建一个进程池是192.168.2.0/24网段的重复上面的操作,给另一个接口配置
|