传输层理论

TCP连接保活机制:
通信两端在长时间没有数据通信的情况下,服务端会每隔一段时间向客户端发送一个保活探测数据包(要求对方进行回复),若连续多次没有收到回复,则认为连接已经断开。
默认7200s,每隔75s,9次无回复
这些数值是可以通过设置套接字选项进行设置的。
连接断开对于程序的影响:recv返回0,send会触发SIGPIPE异常
可靠传输:保证数据有序,安全到达对端

  1. 面向连接
  2. 协议字段中的序号与确认序号,进行包序管理,实现有序传输
  3. 确认应答机制:接收方针对收到的每一条数据进行确认回复
  4. 超时重传机制:发送数据等待超时无回复后,认为数据丢失进行重传
  5. 协议字段中的校验和字段:校验数据一致性,不一致则丢弃,发送重传请求-
  6. 避免丢包
    1. 发送方发送数据过快,过多,导致接收方接收缓冲区满溢导致丢包
    解决方案:滑动窗口机制—进行流量控制
  7. 主要依赖协议字段中的窗口大小字段实现 告诉发送方最多再发送多少数据
    实现原理:
    每一方都会有一个:接收窗口,发送窗口
    发送窗口:
    后沿:发送起始序号
    前沿:结束发送位置 前沿-后沿不能大于对方的窗口大小
    接收窗口:
    后沿:起始接收序号 前沿-后沿不能大于剩余空间大小
    前沿:结束接收位置
    停等协议:收到确认回复后才会发送下一条
    回退n步协议:从丢失的数据开始进行重新传输
    选择重传协议:哪条丢了就重传哪条
    2.传输过程中,网络状态突然不好,导致大量丢包重传
    解决方案:拥塞机制—以慢启动快增长的形式传输
    实现原理:发送方维护一个拥塞窗口,用于限制当前所能发送的数据大小,而这个拥塞窗口以指数层级增脏,实现网络探测,防止传输过程中网络状态突然变差继续大量发送导致的大量丢包
  8. 性能的提升:避免无谓的一些性能损失
    确认序号:是告诉发送方确认序号之前的所有数据都已经接收成功避免因为中间的某个确认回复丢失而导致的重传
    快速重传机制:接收方在接收数据时,先接收到了后发的数据,则认为前边的数据有可能丢失了,则连续间隔发送三条前边数据的重传请求(确认序号未丢失的数据起始序号)
    发送方收到连续三条重传请求,则对对应确认序号的数据进行重传
    主要目的是为了减少超时等待时间
    三条重传请求:了防止延迟到达的情况
    延迟应答机制:接收方接收到数据后,延迟确认回复
    接收方接收数据后如果立即进行回复,大概率窗口带下都会变小延迟应答是为了,在延迟期间,上层有可能将数据取出,尽量保证窗口大小,保证传输吞吐量
    捎带应答机制:
    将确认回复的信息,放到即将要发送的数据报头中,捎带一块传输给对方。
    进而减少纯报头的确认回复(一个报头至少20字节)
    Tcp如何实现传输:
  9. 可靠传输:面向连接,包序管理,确认应答,超时重传,校验和
  10. 避免丢包:滑动窗口,拥塞机制
  11. 提高性能:延迟应答,捎带应答,延迟发送。。。
    Udp如何实现可靠传输:
    在应用层通过tcp实现可靠传输的机制来实现

面向字节流:基于连接,可靠的,有序的,双向的一种字节流(以字节为单位)传输方式
Tcp要发送的数据都会被放到发送缓冲区中,通信时tcp会从缓冲区中取出合适大小的数据(不大于mss大小),封装头部进行发送
不限制上层的发送以及接收数据大小,数据会在缓冲区堆积
好处:传输比较灵活
坏处:会产生粘包问题—将多条数据当做一条进行处理-无法分辨数据边界
本质原因:tcp在传输层并不维护数据边界
解决方案:则需要程序员在应用层进行数据边界管理—区分数据边界
具体技术:特殊字符,数据定长,应用层头部加上数据长度字段
Udp粘包是怎么解决的?–udp不存在粘包问题

网络层:负责地址管理与路由选择—IP协议,地址管理,路由选择
IP协议:
0 31
协版4位 头长4位 服务类型8位 数据报长度16位
分片标识 16位 分片标志3位 分片偏移13位
TTL8位 上层协议8位 校验和16位
源端IP地址32位
对端IP地址32位
选项数据
数据
4位协议版本:4-ipv4协议版本
4位头部长度:以4字节为单位
8位服务类型:3位优先权弃用,4位TOS字段 1位固定为0
16位数据报长度:IP报文最大大小64K
udp报文中数据最大大小<64k-28
16位分片标识:udp报文大小大于MTU,则会在网络层进行数据分片
MTU:最大传输单元—链路层所限制的一个最大数据帧大小
Udp传输时,若数据大小大于mtu,但是小于64k-28则会在网络层进行分片,将一个完整的大的报文分割成为多个小的数据分片,封装IP报头进行传输
TCP的传输不会在网络层进行数据分片,tcp在三次握手阶段就会双方协商mss(最大数据段大小)网络通信是,数据大小都不会大于mss,而mss就是根据mtu计算出的最合适的数据传输大小。
16位分片标识:标识分片属于哪个报文
3位分片标志:1位保留,1位禁止分片
13位分片偏移:多个数据分片在对端会进行分片重组,而分片偏移就是用于表示当前分片在原始报文中的位置(相对于起始位置的偏移量)
13个比特位最大数字:8192,无法在64k报文中表示偏移量 因此分片偏移是以8字节为单位的
8位TTL:报文生存周期—当前默认是64/128,每经过一次路由转发就会-1
为0时,则将数据丢弃
8位上层协议:当前数据所使用协议—用于数据分用时选择解析协议
16位校验和: 校验数据一致性
32位源端-对端IP地址:描述通信两端主机
0~40节选项数据:保存一些路由信息。。
mtu:最大传输单元—以太网-默认1500
mss:最大数据段大小;mss=mtu-ip-tcp
地址管理:
IP地址的管理是按照网络进行管理的(大的网络也是由多个小网络组成)
IP地址组成:192.168.2.13
网络号:是一个网络的标识,一个网络中分配的地址都拥有相同的标识
保证每个网络的网络号不同则每个网络分配的IP地址不会冲突
主机号:在一个网络内主机的标识
网段的划分:
A:高1位固定为0,7位网络号,24位主机号
A类网络,网络号范围:0~127;每个网络拥有255255255个主机
B:高2位固定14位网络号,16位主机号
B类网络,网络号范围128.0~191.255;每个网络拥有256*256个主机
C:高3位固定110,21位网络号,8位主机号
C类网络,网络号范围192.0.0~255.255.255;每个网络拥有256主机
当前划分-CIDR:在早期基础上,使用子网掩码进行更细致的网络划分
子网掩码:无符号4字节整数,必须由连续的二进制1组成

  1. 子网掩码取反可以得到一个网络最大的主机号
    最大主机号+1就是子网中的主机号个数
    192.168.2 255.255.255.240 192.168.2.0~192.168.2.15
    2 . 子网掩码与IP地址相与,可以得到网络号
    192.168.1 255.255.255.0
    56.56.56.56

示例:有一个公司,申请了一个C类网络号192.58.45.0,公司中有四个部门,因此将这个C类网络平均分成四个子网,请问如何划分,每个子网的子网掩码是多少,网络号是多少,IP地址分配范围是多少
192.58.45.0/24
这是一个C类网络,一个C类网络拥有256个主机号,平均划分四个子网,则每个子网拥有64个主机号 得到子网掩码:255.255.255.192
192.58.45.0~192.58.45.63 255.255.255.192 192.58.45.0
192.58.45.64~192.58.45.127 255.255.255.192 192.58.45.64
192.58.45.128~192.58.45.191 255.255.255.192 192.58.45.128

特殊的IP地址:
0.0.0.0–可用于识别为本机任意网卡IP地址-常用于服务器绑定监听地址
255.255.255.255—全网广播地址
127.0.0.1:每个主机上的虚拟回环网卡的地址—进行本地网络回环测试
主机号全为0的IP地址:就是网络号—不能分配给某个主机
主机号全为1的IP地址:UDP局域网广播地址—不能分配给某个主机
一个网络内所能分配的主机号个数是总的个数-2

公网与私网:外网与内网
公网/外网:通常是我们所说的互联网
私网/内网:一个组织所建立的一个内部私有网络(无法直接与外部进行通信)
私网内的多个主机对外通信,都是用的同一私网对外的IP地址,因此组件私网可以节省大量的公网IP地址
主要因为不同的私网可以使用相同的IP地址而不冲突。
组建私网的IP地址与公网中的IP地址不能重复:组建私网的IP地址是有固定地址的,这些地址不会在公网中被使用:
10...* 172.16..~172.31.. 192.168..

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值