TCP网络学习

TCP三次握手建立链接:

TCP是面向连接的协议,所以使用TCP前必须先建立连接,而建立连接是通过三次握手而进行的。,

TCP四次挥手断开链接:

 

四次挥手定义:

·客户端打算关闭连接,此时会发送一个TCP首部 FIN.标志位被置为①的报文,也即 FIN 报文,之后客户端进入 FIHM_MAIT_1状态,·服务燃收到该报文后,就向客户法发送 ACK 应答报文,接着服务端进入 CLOSED_MAIT 状态。
·客户端收到服务端的ACK应答报文后。之后进入FIN_WAIT_2.状态。
·等特殷务擦处理完数据后,也向客户端发送PIN报文。之后服务端进入LAST_ACK状态。·客户端收到服务端的FIN 报文后,回一个ACK 应答报文,之后进入TINE_MAIT状态·酸务器收到了ACK应答报文后,就进入了CLOSE状态,至此服务端已经完成连接的关闭。·客户端在经过2NSL 一段时间后,自动进入CLOSE状态。至此客户端也完成连接的关闭。你可以看到,每个方向都需要一个FIN和一个 ACK,因此通常被称为四次挥手。
这里一点需要注意是:主动关闭连接的,才有TIME_WAIT状态。

 为什么挥手需要四次?
再来回顾下四次挥手双方发FIN包的过程,就能理解为什么需要四次了.
·关闭连接时,客户端向服务端发送|FIN时,仅仅表示客户端不再发送数据了但是还能接收数据,
服务器收到密户端的 FTN报文时,先回一个ACK/应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送「FTN报文格客户端来表示同意现在关闭连接。
从上面过程可知,服务端通常需要等待完成数据的发送和处理,所以服务端的 AcK 和 FTN一般都会分开发送,从而比三次握手导致多了一次.

TCP可靠传输:

流量控制,TCP提供一种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制。

拥塞控制
目的:避免网络变得拥堵,降低数据的发送量。

拥塞窗口cwnd变化的规则:

只要网络中没有出现拥塞,cwnd就会增大

但网络中出现拥塞,cwnd就会减少。

TCP拥塞控制算法主要包括三个部分:慢启动、拥塞避免、快速恢复。

当cwnd<ssthresh时,使用慢开始算法

当cwnd>ssthresh时,停止使用慢开始算法,使用拥塞避免算法

当cwnd=ssthresh时,就使用慢开始算法,又可以使用拥塞避免算法

(ssthresh:慢启动阈值)

慢启动:

拥塞避免
当TCP进入拥塞控制状态后,cwnd 的值就等于拥塞时值的一半,也就是 ssthresh 的值。所以,无法每次报文段到达后都将 cwnd 的值再翻倍。而是采用了一种相对 保守 的方式,每次传输完成后只将cwnd 的值增加一个MSS,比如收到了 10个报文段的确认,但是cwnd 的值只增加一个 MSS。这是一种线性增长模式,它也会有增长逾值,它的增长逾值和慢启动一样,如果出现丢包,那么cwnd 的值就是一个 MSS,ssthresh 的值就等于cwnd 的一半;或者是收到了 3个冗余的 ACK 响应也能停止 MSS 增长。如果TCP 将cwnd 的值减半后,仍然会收到了个元余 ACK,那么就会将 ssthresh 的值记录为 cwnd 值的一半,进入 快速恢复 状态。

快速恢复:


在快速恢复中,对于使 TCP 进入快速恢复状态缺失的报文段,对于每个收到的元余 ACK,cwnd 的值都会增加一个 MSS。当对丢失报文段的一个 ACK 到达时,TCP 在降低cwnd 后进人拥塞避免状态。果在拥塞控制状态后出现超时,那么就会迁移到慢启动状态,cwnd 的值被设置为 1个 MSS,ssthresh 的值设置为 cwnd 的一半。

慢启动通常会使用下面这几种方式结束发送速率的增长

•如果在慢启动的发送过程出现丢包的情况,那么TCP 会将发送方的cwnd 设置为 1并重新开始慢启动的过程,此时会引入一个 ssthresh(慢启动國值)的概念,它的初始值

就是产生丢包的cwnd 的值 / 2,即当检测到拥塞时,ssthresh 的值就是窗口值的一半。

•第二种方式是直接和 ssthresh 的值相关联,因为当检测到拥塞时,ssthresh 的值就是窗口值的一半,那么当cwnd>ssthresh 时,每次翻番都可能会出现丢包,所以最好的

方式就是cwnd 的值=ssthresh,这样 TCP就会转为拥塞控制模式,结束慢启动。

•慢启动结束的最后一种方式就是如果检测到 了个冗余 ACK,TCP 就会执行一种快速重传并进入恢复状态。

重传机制:


超时重传
重传机制的其中一个方式,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的ACK 确认应答报文,就会重发该数据,也就是我们常说的超时重传。

TCP 会在以下两种情况发生超时重传:

数据包丢失

确认应答丢失


快速重传
与前一种快速重传机制不同,它不以时间为驱动,而是以数据驱动重传。


前一种:


SACK方法
只需要在TCP头部【选项】字段加一个SACK的东西,它可以将缓存的地图发送给发送方,这样发送方就可以知道哪些收到,哪些没收到,就可以只重传丢失的数据

IP(网络层)


IP基础知识
主要作用:实现主机与主机之间的通信,也叫点对点通信

IP地址:相当于生活中的门牌号

MAC物理地址:每台网络设备都具有。

区别:

IP地址:IP地址为32位二进制数,不受硬件限制,可以被改变,在网络层

MAC地址:MAC地址为48位二进制数, 地址具有唯一性,在数据链路层

IP地址的分类

 


优点:简单明了,选路简单。

缺点:缺少地址灵活性,不能很好的与现实网络匹配,

无分类地址
现在用的

子网掩码:掩盖掉主机号


IP地址和路由控制
公有IP和私有IP


注释:每个公有IP是不能重复的

IP的分片和分组
MTU:最大传输单元

最常见的数据链路:以太网。它的MTU是1500字节

当IP数据包大小大于MTU时,IP数据包会被分片。

经过分片之后的IP数据报(在第一篇有解释),只能由目标主机进行。

举例


补充:

IPv6 基本认识

1Pv4 的地址是 32 位的,大约可以提供 42 亿个地址,但是早在2011年IPvV4 地址就已经被分配完了。

但是IPvG 的地址是 128 位的,这可分配的地址数量是大的惊人,说个段子IPv6 可以保证地球上的每粒沙子都能被分配到一个 IP 地址。

但1PV6 除了有更多的地址之外,还有更好的安全性和扩展性,说简单点就是 IPV6 相比于 1Pv4能带来更好的网络体验。

但是因为 1Pv4 和 IPV6 不能相互兼容,所以不但要我们电脑、手机之类的设备支持,还需要网络运营商对现有的设备进行升级,所以这可能是 IPV6 普及率比较慢的一个原因。

IP协议相关技术

DNS
DNS可以将域名地址自动转换为具体的IP地址,实现这一技术的就是DNS域名解析

DNS中的域名都是用句点来分隔的

如www.server.com

这里的句点代表了不同层次之间的界限

在域名中,越靠右的位置表示其层级越高


域名解析过程:


ARP
目的:IP地址转化成MAC地址


主机会通过广播发送 ARP 请求,这个包中包含了想要知道的MAC 地址的主机 IP 地址。

当同个链路中的所有设备收到 ARP 请求时,会去拆开 ARP 请求包里的内容,如果 ARP 请求包中的目标 IP 地址与自己的 1P 地址一致,那么这个设备就将自己的 MAC 地

址塞入 ARP 响应包返回给主机。

操作系统通常会把第一次通过 ARP 获取的 MAC 地址缓存起来,以便下次直接从缓存中找到对应 1IP 地址的 MAC 地址。

DHCP
DHCP交互的四个步骤


如何解决DHCP服务器和客户端不在用一个局域网?


DHCP 客户端会向 DHCP 中继代理发送 DHCP 请求包,而DHCP 中继代理在收到这个广播包以后,再以单播的形式发给 DHCP 服务器。

服务器端收到该包以后再向 DHCP 中继代理返回应答,并由 DHCP 中继代理将此包转发给 DHCP 客户端。

因此,DHCP 服务器即使不在同一个链路上也可以实现统一分配和管理IP地址。

NAT
目的:将私有IP转成公有IP
MAC
MAC地址也称物理地址、硬件地址和老化地址

主要用于识别数据链路中互联的节点


MAC地址结构:


ARP
ARP 协议的是一个通过用于实现从IP 地址MAC 地址的映射,即询问目标 IP 对应的 MAC 地址 的一种协议。ARP 协议在 IPv4 中极其重要。

注意:ARP 只用于 IPv4 协议中,IPv6 协议使用的是 Neighbor Discovery Protocol,译为邻居发现协办议,它被纳入 ICMPv6 中。

简而言之,ARP 就是一种解决地址问题的协议,它以 IP 地址为线索,定位下一个应该接收数据分包的主机 MAC地址。如果目标主机不在同一个链路上,那么会查找下一跳路由器的 MAC 地址。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值