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网段的重复上面的操作,给另一个接口配置