一、TCP和UDP协议
TCP协议
TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。
TCP报文段
TCP报文段由若干字节构成一个分组
源端口号:发送方进程的端口号
目标端口号:接收端进程的端口号。接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程。
序号:发送端为每个字节进行编号,便于接收端正确重组(当TCP从进程接受数据字节时,把它们分成数据段存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性)。
确认号:对发送端的确认信息。接收端响应消息时将会用它来告诉发送端这个序号之前的数据段都已经收到,如确认号是x,就是表示前X-1个数据段都已经收到。
首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。
控制位:
-
URG:紧急位。紧急指针有效位。
-
ACK:确认位。只有当ACK=1时,确认序列号字段才有效:当ACK=0时,确认号字段无效。
-
PSH:急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。
-
RST:重置位。当RST值为1时,通知重新建立TCP连接。
-
SYN:同步(连接)位。同步序号位,TCP需 要建立连接时将这个值设为1.
-
FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1.
窗口大小:说明本地可接收数据段的数目。这个值的大小是可变的, 当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的。
校验和:用来做差错控制。字段检验的范围包括首部和数据这两部分。数据段在发送时和到达目的地时会进行校验和计算,若这两次的校验和一-致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。
紧急指针:和URG配合使用,当URG=1时有效。
选项:在TCP首部可以有多达40字节的可选信息。例如,最大报文段长度MSS (Maximum Segment Size)。 MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”
TCP的常见端口
TCP连接和断开
在数据通信前,发送段与接收端要先建立连接,等数据发送结束后,双方再断开连接,TCP连接的每一方都是由一个IP地址和一个端口号组成的。
TCP的连接过程
TCP建立连接的过程称为:三次握手。
- 第一次握手:PC1向PC2发送发送建立连接请求,此过程就是典型标志就是:TCP的SYN控制位为1,其他五个控制位都为0.
- 第二次握手:第二次实际上由两个部分组成,PC2收到了PC1的请求,回复了一个确认信息,此过程典型标志就是TCP的ACK控制位为1,其他五个控制位都是0,然后确认序列号是PC1的初始序列号+1;之后PC2也会向PC1发送请求建立的连接,SYN控制位为1,其他控制位为0,这两个部分一般合并在一个数据包中实现。
- 第三次握手:PC1收到PC2的回复加请求,也向PC3回复了一个确认信息,此过程跟第二次握手一样, 典型标志就是TCP的ACK控制位为1,其他五个控制位都是0。
就这样完成了三次握手,在PC1和PC2之间建立了TCP连接。
TCP断开的过程
TCP断开连接的过程称为:四次握手。
- 1、PC1向PC2发送断开连接请求的TCP报文段,、FIN=1,ACK=1;
- 2、PC2回复PC1的请求,发送TCP报文段,ACK=1;
- 3、PC2向PC1发送断开连接请求的TCP报文段,、FIN=1,ACK=1;
- 4、PC1回复PC2的请求,发送TCP报文段,ACK=1;
在TCP断开连接的过程中,有一个半关闭的概念。TCP一方(通常是客户端)可以终于终止发送数据,但是仍然可以接受数据,称为发送任何数据。
- 客服端发送FIN报文段,半关闭了这个连接,服务器发送ACK报文段接受了半关闭请求;
- 服务器继续发送数据,而客户端只发送ACK确认,不再发送任何数据(已断开自己和服务器的连接);
- 当服务器把所有数据都发送完成后,再发送FIN报文段,客户再发送ACK报文段确定,然后就关闭了TCP连接了。
UDP协议
- 无连接不可靠的传输协议。
- 花费的开销小
UDP报文的首部格式
字段含义如下:
- 源端口号:用来标记数据发送端的进程;
- 目的端口号:用来标识数据接收端的进程;
- UDP长度:用来指出UDP的总长度,为首部加上数据;
- 校验和:用来完成对UDP数据的差错检验,这是UDP提供唯一的可靠机制
UDP常用的端口号及其功能
二、静态路由的原理和配置
路由器的原理
如果一台计算机要和非本网段的计算机进行通信,数据包要经过很多路由器,数据包从PC1到达PC2有很多路径可以选择,但是这些路径中在某一时刻总会有一条路径是最优最快的。因此,为了尽可能的提高网络访问速度,就需要有一种方法来判断从源主机到达目的主机所经过的最佳路径,从而进行数据转发,这就是路由器的作用。
路由器的工作原理
通过路由表转发数据
路由表的形成
路由表是在路由器中维护的路由条目的集合,路由器根据路由表做路径选择。
- 1、直连网段 动态学习 ,配置IP地址,端口up状态,形成直连路由。
- 2、非直连网段 静态添加
静态路由:由管理员手工配置的,是单向的,缺乏灵活性,但是准确性高。
相当于已经指定好方向,不会走错路。但是是单向的数据有去无回,所以需要在对方的路由器上配置一个静态路由指回来的路径。
默认路由:当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口。默认路由最好布置在末梢网络。
交换与路由对比
- 路由工作在网络层
根据路由表转发数据
路由选择
路由转发 - 交换工作在数据链路层
根据MAC地址表转发数据
硬件转发
静态路由和默认路由器的配置
默认路由
【Huawei】ip route-static 0.0.0.0 0.0.0.0 192.168.12.1
静态路由 目标网段 子网掩码 下一跳
【Huawei】ip route-static 192.168.10.0 255.255.255.0 192.168.12.1
查看路由表
【Huawei】display ip routing-table
【R1】ip route-static 192.168.1.0 24 11.0.0.2 默认优先级为60,越小越优先
【R1】ip route-static 192.168.1.0 24 12.0.0.2 preference 70 配置浮动路由用于备份(也是静态路由,备用路径,因为优先级被我们设定为70)