32 计算机网络
osi七层协议
- 应用层 为计算机用户提供服务http
- 表示层 数据处理,编解码,加密解密,压缩解压缩
- 会话层 管理应用之间的会话建立,维护重连ssl rpc
- 传输层 提供主机进程之间通话需要的数据传输服务
- 网络层 路由和寻址,决定数据在网络的游走路径ip ipv6
- 数据链路层 管理相邻节点的直接通信
- 物理层 利用传输介质实现计算机节点之间比特流的传送
- 应用层 = 应用+表示+会话
- 传输层 = 传输
- 网络层 = 网络
- 网络接口层 = 数据链路+ 物理
- ARP:地址解析协议,把ip地址解析为硬件地址。
- 端到端的通信,是应用进程之间的通信。tcp和udp。
- 应用数据被分割成数据块
- 给每一个包编号,接收方按序重组,保证有序。
- 校验和:保持首部和数据的校验和,保证数据未被篡改。
- 丢弃重复数据
- 流量控制:接收方来不及处理发送方发送的数据时,可提示发送方降低速率。
- 可变大小的滑动窗口协议。窗口里面序号表示允许发送的序号,窗口后沿以后表示已经发送且已收到确认,窗口前沿以前表示不允许发送,当收到一个确认,窗口向前移一位。窗口大小字段由接收方控制,在接收方发给发送方的报文里。
- 拥塞控制:网络阻塞时,减少数据的发送。
- 拥塞是一个全局过程,涉及所有主机,所有路由器,以及与降低网络传输性有关的所有因素。
- 发送方维护“拥塞窗口”,发送速率取拥塞窗口和接收窗口之间小的那个。
- 四种拥塞控制算法
- 慢开始:初始值为1,每轮次加倍
- 拥塞避免:每经过一个往返时间窗口加大1
- 快重传与快恢复:看不懂
- ARQ协议:automatic repeat reQuest,
- 停止等待ARQ协议
- 发完一个分组就停止发送,设计时器等待,等对方确认后再发下一个分组,如果没收到确认就重发。
- 接收方收到重复分组,说明发送方没有收到上一个确认,此时接收方丢弃重复分组,并再发确认消息。
- 计时器时间应比数据往返时间稍长一点。
- 连续ARQ协议
- 发送方连续发送,接收方收到一堆包之后,把连续的最后一个包编号发回发送方。发送方从最后一个包下一个开始重传。
- 停止等待ARQ协议
- 超时重传:tcp发出一个段后,设定定时器等待对方确认收到,如果没有收到对方确认,重发这个段。
无连接,尽最大努力交付,面向报文,无拥塞控制 ,支持一对一,一对多,多对一,多对多,首部开销小,只有四个字段,源端口,目的端口,长度和校验和。
tcp特点
- 面向连接,一对以,提供可靠交付,全双工通信,面向字节流,首部最少20字节。
- 发起三次握手的是客户端。但是客户端和服务端都可以发起四次挥手。
tcp用主机的ip地址加上端口号作为tcp连接的端点,这样的端点就叫做套接字socket或插口,套接字用(IP地址:端口号)来表示,每一条tcp连接唯一被通信两端的两个端点所确定。
应用层 DNS(domain name system)
将人类可读域名转化为ip地址
url和uri
URI 统一资源标识符,像身份证一样
URL 统一资源定位符,像家庭住址一样
问题1 访问一个网站大致的过程 1.dns解析
dns(domain name system)域名系统-从域名解析出 IP 地址
先问本地域名服务器,看看缓存里有没 有。
没有就去问根域名服务器。
根域名服务器让去问com域名服务器。
com域名服务器让去问baidu.com域名服务器。
baidu.com域名服务器知道需要的主机地址。
本地域名服务器返回ip,并存入缓存。
dns优化 dns缓存
- 浏览器缓存
- 系统缓存(etc/hosts,改host文件梯子)
- 负载均衡(CDN)
根据机器负载量、地理位置等返回主机地址
3.发送http请求
请求头 可接受的字符串类型,可接受的编码类型,可接受的语言,内容类型(content-type:application/json),cookie,user-agent
响应报文 状态码:1开头:已接收。2开头:成功。3开头:重定向。4开头:客户端错误。5开头:服务端错误。
4.服务器处理请求并返回http报文
5.浏览器解析渲染页面
6.连接结束
7.各层协议的指责
从客户端发送请求开始:
- http协议 生成针对目标web服务器的http请求报文
- tcp协议 将http请求报文分割成报文段,把每个报文段可靠地传递给对方
- ip协议 搜索对方的地址,一边中转一边传送
- tcp协议 按序号重组接受到的报文段
- http协议 处理请求的内容
文章图片
为什么要发送syn和ack?
synchronous建立连接,acknowledgement确认。
第二次发送回syn是为了告诉客户端“我收到的就是你发送的信息”,第三次发送回ack同理。
四次挥手
文章图片
注意time-wait阶段会等待两倍最大报文时长才关闭,因为如果服务端没有收到最后一次ack,会重发fin给客户端。
长连接短连接
- 短连接:每次操作都建立一次连接。
- 优点:所有存活的连接都是有用的连接。
- 长链接:保持连接特性。
- 使用长链接的http协议会在响应头加入connection:keep-alive
- 如果客户端消失,服务端就会留下一个半开放的链接,服务器会定时、多次向客户端发送探测报文段,检查客户端状态。
- 优点:省去tcp握手的成本
- 缺点:半开放的链接需要管理并关闭。
token用来保存用户身份,通过token来证明我就是我。不需要查数据库或缓存。
session用来记录用户状态,在服务端上。
客户端通过cookie记录和携带token,通过token证明我是我,服务端通过session知道“我”是处在某态的。
推荐阅读
- 计算机网络基础TCP\HTTP\HTTPS
- 计算机网络|计算机网络——DHCP协议详解
- Linux|Linux--网络基础
- Android|Android Studio 的 Browse Repositories 下载不了插件
- 微信小程序____CSS篇之定位(position)及浮动(float)
- css的position-relative兼容问题与解决办法
- 计算机网络-数据链路层
- 计算机网络之ARP协议
- 简单介绍CSS定位position属性
- 计算机网络实验二交换机配置Cisco|计算机网络实验二交换机配置Cisco,计算机网络实验1 — Cisco交换机的配置