网络基础三的完整版

  •  

**1**可靠传输:
1.tcp面向连接
2.确认应答机制
3.超时重传机制
4.协议字段中序号/确认序号
可靠传输牺牲了部分性能,但是有些损失是可以避免的,
  1.滑动窗口机制
    * 通信双方,在通信时会通过协议字段中的窗口字段协商窗口大小,告诉对方一次可以发送的最大数量。
      *当然这些数据不可能一条数据全部发送,通信双通常在三次握手阶段,还会协商一个数据叫MMS(最大数据段大小---数据报中数据的最大长度)。
    *发送方在发送数据的时候会将窗口大小的数据分成大小不大于MMS大小的数据报进行发送。  
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190729140311762.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JrZjEzNjExNDM3OA==,size_16,color_FFFFFF,t_70)
*1.流量控制:通过协议字段中的窗口字段,通知发送方能够发送的最大数据量,通过这个来限制对方的发送速度,避免发送过快,导致数据接收缓冲区塞满,而引起的后序丢包重传。
*2.快速重传:当接收方接收到第二条数据,但是没有接收到第一条,则认为第一条有可能丢失,则立即向发送方发送第一条数据的重传请求,并且将这个重传请求,连续发送三次;
发送方连续三次接收到重传请求,则对这条数据进行重传。

连续发送三次重传请求,是为了避免有可能因为网络阻塞而接收到延迟的数据。
传输过程中使用的三个常见的协议:
1.停等协议,2.回退n步协议,3.选择重传协议
(1)停等协议,当发送方发完一条数据后,便会等待来自接收方的反馈,若接收到正常反馈则继续发送下一条数据,

*3.拥塞控制:发送方维护一个拥塞窗口,控制一次发送的数据量,拥塞窗口以慢启动快增长的形式控制传输的数据量,起到对网路进行探测的作用,可以避免因为网络状况不好而导致的大量丢包。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190729141637766.png)
2.捎带应答机制:接收方为每一条接收到的数据组织报文,通过报文头部中的确认序号字段进行确认回复,这时候如果刚好有要给对方发送的数据,则将这次的确认回复序号直接放到要发送的这条数据头中,可以节省一条空报文的回复,提高传输效率。
![](https://img-blog.csdnimg.cn/20190729174626554.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JrZjEzNjExNDM3OA==,size_16,color_FFFFFF,t_70)
3.延迟应答机制:接收方接收到数据之后,如果立即进行回复,窗口大小就会降低导致传输吞吐率降低,降低了发送速度;
这时候如果接收到数据之后,延迟一会进行确认回复,则有可能用户将缓冲区中的数据取走,保证传输吞吐率。
提高性能:滑动窗口机制(流量控制,快速重传,拥塞控制),延迟应答机制,捎带应答机制。
*3字节流服务
send发送的数据,会先放到socket的发送缓冲区中,然后操作系统选择合适的时机将数据发送出去。

![在这里插入图片描述](https://img-blog.csdnimg.cn/2019072918584935.png)
多条小数据融合成一个大包发送出去,可以提高一定的传输性能;
并且接受方,传输层数据的交付也比较灵活,可以一点一点交付,也可以一次性全部交付所有数据。
但是字节流服务会造成数据的粘包问题:多条数据在缓冲区中粘连在一起。
**粘包的本质原因**:tcp在**传输层对**数据的格式边界不敏感,不会替用户区分那条数据从哪里开始,到哪结束,只关注需要向用户交付多长字节的数据。
因此粘包问题的解决方案就是用户在**应用层**进行数据的边界管理:
1.特殊字符的标记。
2.对数据进行定长传输。
3.不定长的数据在应用头中声明数据长度。

tcp连接管理中的保活机制:
tcp通信双方若长时间(7200s)无数据往来,则每隔一段时间向对方发送保活数据探测包,要求对方进行回复,若连续多条(9)保活请求没有响应,则认为连接断开。

连接断开在程序中的体现:recv读完所有数据之后,返回0;send触发异常SIGPIPE。

TCP在应用层实现的主要协议:HTTP/FTP

网络层:负责地址管理与路由选择:主要协议IP协议

路由器:在复杂的网络通信环境中,为每一条数据选择一条合适路径进行传输;
而选择路径是根据每一条数据中的目的端地址决定的,并且路由选择也依托与良好的地址管理。
IP协议字段:
4位版本协议:说明是IPV4还是IPV6协议。
4位头部长度:以4字节为单位 大小为20~60字节。
8位服务类型:4位TOS字段,其中分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,但是这四个互相冲突,只能存在一个。
16位数据报长度:包括IP头在内,一个IP报文的长度-----一个udp报文的最大数据段大小64k-20-8;一个tcp报文的最大数据长度64k-20-20;
16位标识:udp数据报大小大于MTU大小,但是小于64k-20-8时,会在网络层进行数据分片,为了能够在对端有序对分片进行udp数据报的重组,因此需要标识哪个分片属于哪个udp数据报。
3位标记:一位保留,一位标记是否禁止分片,1位标记末位分片。
13位偏移片:标识每个分片数据相对于完整udp数据报起始位置的偏移量--实现分片的有序重组(为什么是13位偏移片,因为每个数据是以8字节为单位)。
8位TTL(报文生存周期):默认64,每经过一个路由器跳数则-1;为0时,则报文丢弃。
8位上层协议:用于数据分用时选择上层解析协议。
16位校验和:确定数据的准确性。
32位源IP地址/目的IP地址:标记数据从哪来到哪里去。
40字节选项数据。

地址管理:
IP地址:网络中唯一标识一台主机。
每一个路由器都可以组建一个局域网,并且局域网中的IP地址大多都是经过路由器进行DHCP(动态分配地址),如果IP地址随意分配,很容易出现地址冲突,因此IP地址不能随意分配。
路由器为每一个局域网中的设备分配的IP地址中都应该包含这个网络的标识---网络号
并且在局域网中为了能够标识每一台主机,因此IP地址中还包含有这个主机的标识---主机号。

IP的组成:网络号+主机号
相邻的网络只要规定不使用相同的网络号,就可以避免IP地址的冲突。

网段的划分:
早期的网段划分为5类;
其中A类:是由0.0.0.0~127.255.255.255 
B类:128~191 其中包含主机号64k个
C类:192~223 其中包含256个主机号。
D类:224~239;
E类:240~247;
现在网段的划分方式:CIDR方案
 在CIDR方案中引入了一个关键信息:子网掩码
 子网掩码:
 本质:unit32_t整数,必须由一连串的二进制1组成。
 作用:
 1.子网掩码与IP地址相与可以得到网络号。
 2.子网掩码取反,可以得到局域网中主机号个数。
 网络中的特殊地址:
 主机号全为0的IP地址---网络号--用于标识一个网络,不能分配给主机。
 主机号全为1的IP地址---UDP局域网广播地址,不能分配给主机。
 在一个局域网中能够分配给主机的主机号只有主机号个数-2;
 127.0.0.1:本机的虚拟回环网卡地址,常用于本机的网络回环测试;

路由器组建局域网时,网络号不能随意使用;z在RFC1918中规定组建局域网(私网)所能使用的网段必须是指定的网段:
10.*.*.*       172.16.*.*~172.31.*.*    192.168.*.*
相邻的网络不能使用相同的网络号。

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值