网络基础部分:
=======================================================================================
TCP三次握手
- syn表示建立连接
- ack确认连接
- seq在被对方用作ack的时候,会加上对方接收到的数据字节大小
- 对方发送过来的ack会被当做下次发送数据的seq
TCP四次挥手
- TCP断开连接的主动权在自己手上,所以每台设备只能单方面断开自己的TCP
- 在断开的时候,FIN和ACK是两边都需要进行的
TCP滑动窗口
特点:为tcp提供可靠性传输(检测数据是否能够精确到达目的地,如果不能则进行数据重发)和流量控制(管理发送数据的能力,不要超过设备的承受能力)
-
首先定义一个窗口大小假如为20字节大小,但发送出去数据,并收到ack的回复,窗口往后滑动
-
窗口大小可以调节,通常应用限制在65536,2的16次方字节
慢启动机制
TCP有限状态机
为什么要四次挥手:
TCP连接是双向传输的对等模式(即双方都可以同时向对方发送/接受数据),当有一方要关闭连接时,会发生FIN告知对方,对方回一个ACK则一个方向上的连接关闭了
需要四次挥手才能断开连接是因为:TCP是双向对等传输,故有两个方向的连接,需要两个FIN才能断开
当服务端收到客户端发送过来的FIN断开请求时,回复ACK后只是断开了client -> server方向的连接,服务端还可以继续向客户端发送数据(若数据没有发送完)。数据发送完后,服务端也发送一个FIN,客户端回复ACK,则全部断开了
总结:
TCP是全双工通信,不能单方面完全断开连接
客户端发送FIN:只能断开客户端向服务端方向的连接
服务端发送FIN:只能断开服务端向客户端方向的连接
客户端向服务端发送FIN后,进入CLOSED_WAIT状态,这个状态就是为了让服务器继续发送没发完的数据,发送完后,服务器会发送FIN断开连接
报文格式
tcp
UDP报文
- 网络层提供了逻辑地址,IP地址
- IP地址最主要的作用就是帮助路由器确定这个数据是属于哪个局域网的(作用类似于邮政编码)
- 网络层数据报文结构如下
IP报头详解
- 版本
- 头部长度
- 优先级或服务类型
- 总长度
- 数据标识
- 分片标记
- 分片偏移
- 存活时间
- 协议号
- 头部校验
- 发送者IP地址
- 接收者IP地址
- 选项
==============================================================================================================
IP编址
- 在IP网络中,通信节点需要有一个唯一的IP地址
- IP地址用于IP报文的寻址以及标识一个节点
- IPv4地址一共32bits,使用点分十进制的形式表示
- IPv4地址由网络位和主机位组成
- 网络位一致表示在同一个广播域中,可以直接通信
- 主机位用于在同一个局域网中标识唯一节点
IP地址的类别
- 早期参与互联网的设备不多,所以仅仅使用ABC类地址分配给用户即可
- 随着网络用户的增多,ABC类分配地址过于浪费,于是出现子网掩码方式划分网络位和主机位
IP网络通信类型
- 单播(Unicast)
- 广播(Broadcast)
- 组播(Multicast)
子网掩码(Netmask)
- 网络掩码与IP地址搭配使用,用于描述一个IP地址中的网络部分及主机部分
- 网络掩码32bits,与32bits的IP地址一一对应,掩码中为1的位对应IP地址中的网络位,掩码中为0的位对应IP地址中的主机位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vRdslNjK-1662436745512)(E:\资料\我整理的笔记\image\image-20210812202755458.png)]
- 减少一个局域网中的设备数量可以有效降低广播报文消耗资源
- 可变长子网掩码可以将一个局域网中的主机地址分配的更加小
广播地址与网络号
- 在局域网中经常会有广播的需要(比如,mac地址查询,地址冲突检测等等),所以将主机位全为1的地址做为本局域网的广播地址(注意!广播并不能跨越不同的局域网)
- 在网络中需要表示整个局域网,就像邮政编码表示一个大的区域一样,所以将主机位全为0的地址作为本局域网的网络号,用来代指整个网段
- 综上所述,计算产生的子网及每个子网的主机数量公式如下:
私有IP地址
-
如果要取得互联网合法地址用于通信,必须要找iana.org组织分配
-
很多企业内部都有大量的网络设备,大多数时候这些设备只需要内部通信即可
-
企业的网络管理员可以从如下网段中自行分配地址
-
私有IP地址空间中的地址不需要申请,随意使用,但是不能在互联网上与合法地址通信(因为对方没法回复你这个地址,因为世界上私有IP地址段无数个重复的,怎么知道回到谁那里呢)
-
而我们明明用的私有IP地址,也可以上网,因为我们需要先把自己的上网请求提交给网络中的网关(就是你家的出口路由器),再由网关代替我们去获取内容转交给我们的电脑手机,而网关往往能从运营商那里得到一个合法的公有IP地址
ping 192.168.12.2 repeat 100
route print #windows
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aTPlKw1f-1662436745518)(E:\资料\我整理的笔记\image\image-20211021182410894.png)]
路由器),再由网关代替我们去获取内容转交给我们的电脑手机,而网关往往能从运营商那里得到一个合法的公有IP地址
ping 192.168.12.2 repeat 100
route print #windows
![[外链图片转存中…(img-aTPlKw1f-1662436745518)](https://img-blog.csdnimg.cn/30712e1893c943f4b856d8417adfd676.png)