应用层与传输层

1.应用层

很多时候这一层的协议是程序员自定义的应用层协议(相当于一种约定,约定数据如何进行传输)。

eg:

实现登录的场景:

此时前端就需要与后端约定请求(假设约定使用ajax请求)中的一些参数(比如type,url,data等),响应为用户是否登录成功(返回true/false)。这个过程就是自定义协议,是可以根据实际情况灵活变通。

2.传输层

传输层主要是UDP和TCP协议,这里也只介绍这两种。

2.1 UDP

UDP是无连接,不可靠传输,面向数据报,全双工的传输层协议。格式如下:

UDP报头中包含四个信息:源端口号,目的端口号,UDP报文长度,UDP校验和,且每个部分都是两个字节(但是单位可能不同)。

(1)源/目的端口号:

两个字节大小:0~65535(0一般不用),1~1023:“知名端口号”(上古时期知名的,但是现在可能已经有很多不用了),剩下的随便进行自定义。

(2)UDP报文长度:

也是两个字节大小:0~65535(单位为字节),也就是64KB(其实64KB-8字节,因为报头占8字节,但由于与64KB差距甚微,所以就近似取的64KB)大小,这代表UDP所能承载的数据报的最大长度为64KB,超过就需要考虑使用TCP了。

(3)UDP校验和:

其本质就是字符串,体积比原始数据要小,由原始数据生成,是用来校验原始数据的正确性的。校验和相同,则原始数据相同;校验和不同,则原始数据一定不同。

1)为什么会有校验和?

网络环境错综复杂,数据在传输过程中就可能出现错误,因此就需要一个东西来校验数据的正确性,校验和由此而生。

2)校验和计算方法:

a.循环冗余算法(CRC):把当前要计算校验和的数据,每个字节都进行累加,把得到的结果保存在两个字节中,如果中间某个数据不一样的话,那么第二次计算校验和(接收方计算)的时候就会和第一次(发送方计算)的不一样。

b.md5算法(更多采用):

有三个特性:

定长:无论原始数据有多长,经过此算法计算出来的校验和都是定长的(32位/16位)

不可逆:原始数据经过md5算法可以很轻松得到校验和,但是想通过校验和解析原始数据是困难的(数据长度较少是可以实现的,一但比较长就会很困难了)

分散:即使大部分原始数据都是相同,只要有一个不一样,得到的校验和都会相差甚大。

2.2 TCP

TCP是有连接,可靠传输(要想进行TCP协议,得先保证当前网络环境是通畅的,如果出现重大网络故障,那么TCP协议也就进行不下去了,可靠传输也就无从谈起了),面向字节流,全双工的传输层协议,也是优先考虑使用的传输层协议。

2.2.1 TCP格式:

(1)源/目的端口号:

同UDP相同,不在介绍。

(2)4位首部长度:

4位:4bit(0~15,单位为4字节),但首部长度是不定长的,最短20字节(不包含选项),最长60字节(包含选项)。

(3)16位校验和:

同UDP相同,不在介绍。

(4)标志位:

ACK(确认应答报文段),SYN(同步报文段),FIN(结束报文段),RST(复位报文段),PSH,URG

为1代表目前TCP报文为对应字段报文,为0代表为普通报文段。

2.2.2 TCP十大机制

(1)确认应答:

发送方把数据发送给接收方过后,接收方返回一个应答报文(ACK),发送方接收这个ACK之后就知道自己是否数据发送成功;是TCP进行可靠传输的核心机制;使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值