应用层
DNS
迭代查询:本地DNS服务器向顶级域服务器查询,查询信息返回给本地域服务器,由本地域服务器,向其他服务器继续查询
递归查询:类似于函数调用,一个一个向下查询。
不同类型的dns记录
TYPE=
A:IPV4的主机名
NS:本地的权威域名服务器
MX:邮件服务器的规范主机名
CDN
多个数据中心,用于视频播放。
传输层
概述
进程之间的逻辑通信
将应用层的消息进行分段,然后传输给网络层
接收端,从网络层拿到保温段,取出传输层的头部信息,交给应用层
A和B两个城市,两户人家,每家有很多小孩
网络层负责将邮件包裹从一个城市运输到另一个城市
传输层负责将邮件打包交给邮递员,以及收到邮件分发给每个小孩
多路复用:收集小孩的邮件打包
多路分解:将邮件分发给小孩(传输层将数据去掉传输层的头,交给socket)
socket套接字:在传输层和应用层进程之间
TCP:可靠有序的交付
UDP:不可靠的无序的交付
每一个传输层的报文段都包含一个传输层segment,每个segment都包含源端口和目标端口
TCP socket
需要源IP,源端口号,目的IP,目的端口号
因为服务端会有1个监听socket和多个连接socket
UDP
使用场景:DNS,SNMP,部分流媒体
UDP的可信传输应该在应用层完成
校验和:将报文段内容看成16-bit整型数流求和
可信数据传输原理
Rdt1.0:可行信道上
假设下层信道不会产生字节流的错误,也不会丢包
Rdt2.0:具有比特位错误的信道
没有分组丢失,但是在下层传输信道中可能发生比特位翻转
使用校验和进行检测
发送端:
0.等待上层的call
1.数据和校验和封包
2.等待接收方发过来的确认信息
2.1如果是负面的确认NAK,就重发,等待确认消息(回到2)
3.如果是正面的反馈ACK,无操作,回到步骤0
接收端:
0.等待
1.收到信息
1.1如果有错误,发送负面的确认消息NAK,回到0等待
1.2如果没有在错误,回复正面的确认消息ACK,回到0等待
Rdt2.1 发送端处理混淆的ACK和NAAK
发送端:
1.发送包0,等待确认
2.接收到消息
2.1如果是0号包的NAK或者接收到的数据包损坏,回到2等待
2.2如果是0号包的ACK且接收到的数据包没有损坏,无操作,进入下一步
3.等待发送数据包1
3.1
接收端:
0.等待接收0号数据
1.接收到数据包
1.1如果数据包是损坏的,发送NAK,回到0
1.2如果数据包没有损坏,且受到的数据包为1号包,发送ACK,丢弃收到的包,回到0
1.3如果数据包没有损坏,且数据包为0号包,交付数据包,发送ACK,进入下一步
2.等待数据包1
2.1接收到数据包且损坏,发送NAK,回到2
2.2接收到数据包且没有损坏,且数据包编号为0,发送ACK,丢弃受到的数据包,回到2
2.3如果受到数据包没有损坏且编号为1,交付数据包,发送ACK,回到步骤0
Rdt2.2:不需要NAK的协议
发送方收到重复的ACK,将进行和接收到NAK一样的重传动作