http tcp 网络基础知识

2022-11-02  本文已影响0人  无题syl

了解数据是怎么从自己电脑传输到距离很远的服务器的

借鉴他人

文档地址

浏览器数据传输流程图

image.png

用户输入url后发生了什么

syl 专属记忆流程图
1. 用户输入
判断输入是关键字还是url
是否有非ASIIS码
查询https列表
2. 检查缓存
强制缓存 没有过期 不走请求 直接加载本地资源 渲染页面
协商缓存 不管有没有通过 都要走http请求
3. DNS查询
DNS 缓存 DNS记录 浏览器缓存 操作系统dns缓存 路由器缓存 ISP缓存 都没有·则进行DNS查询
DNS查询 递归查询 迭代查询
4. TCP链接 三次握手 可靠传输 流量控制 拥塞控制
利用socket建立tcp链接
tcp数据包送往网络层 由IP协议处理成IP数据报分片
ARP协议再封装ip数据报确定数据吓一跳送到哪个路由器(ip数据与mac地址物理地址对应)
传递给数据链路层 分装成帧
送往物理层转成传输信号
传送给服务器 接收后响应
5. 三次握手 建立连接
6. 发送http请求 (持久连接 并发请求)
7. 浏览器接收http响应
8. 断开连接 四次挥手
9. 渲染页面

潦草的笔记

与浏览器有关的知识:
js变量提升 this指向 浏览器调配  let const

提出问题:
浏览器中涉及计算机网络的各种协议是怎样工作的、数据包是怎么收发的,浏览器怎么解析收到的文件


Tcp/IP协议
4 应用层 (Application)
3 运输层(Transport)
2 网际层(Intnet)
1 网络接口层(Network Access)
数据链路层
物理层
应用层 浏览器 发送http请求 逐级包装
逐级解析再到应用层

****************************************************************************************************

url的解析:

1. url中 浏览器检查 是否有不是a-z A-Z 0-9 -或者.字符   如果有的话 使用Punycode编码
2. 检查HSTS列表 https列表 downgrade attack的威胁

*****************************************************************************************************

关于浏览器缓存(http缓存):
第一次浏览器发起http请求 浏览器要判断是否缓存
强制缓存:Expires(http:1.0) 响应头中 / Cache-Control (http1.1优先级高)响应头和请求头中
1. 状态码是灰色请求代表强制缓存
2. 同时存在内存缓存和协商缓存    
3. from memory cache from disk cache
内存缓存快速读取:内存缓存会将编译解析后的文件,直接存入该进程的内存中。时效性:一旦进程关闭,则进程的内存则会清空
硬盘缓存:读取缓存需要对该缓存存放的硬盘文件进行I/O操作。


《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
强制缓存判断是在本地
协商缓存是服务器(都是服务器和浏览器自动加的)
强制缓存失效 则一定会发起http请求
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


last-Modified (响应)/If - Modified-since(请求)
Etag/If-none-Match(优先级高)
缓存规则:强制与协商缓存
是有请求的 只是返回状态码 不返回文件资源


*****************************************************************************************

DNS缓存

DNS服务器
1.  根DNS服务器 提供了TLD服务器(顶级域DNS服务器)
2.  顶级域DNS服务器(提供权威DNS服务器IP地址)
3 . 权限DNS服务器 百度服务器


www.bilibili.com
1.  www 是三级域名 bilibili 是二级域名 com 顶级域名
2. 主机名.次级域名.顶级域名.根域名
3 . cdn分布式部署 域名映射

************************************************************************************************

TCP链接
tcp三次握手开辟了对应的资源空间
流套接字 基于TCP
Chrome同一域名下同时最多只能有6个TCP链接。超过6个 其余则等待
如果统一域名下同时友10个请求发生,则其中4个请求会进入排队等待

************************************************************************************************




1.   每个连接就要连接TCP?
http/1.0中是,http是短链接,连接成功后就释放 对于socket也是
http/1.1中 长连接 ,可以复用

2.   浏览器发起请求建立连接和QQ独立应用有什么不同?
浏览器与服务器建立连接
QQ 是client -server-clicent

****************************************************************************************************




socket可以用代码操作与TCP的关系
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元


传输层2个协议
tcp UDP
****************************************************************************************************
通信方式
TCP 提供全双工通信 可以同时发 同时接收
半双工:只有一个发,只能接收
****************************************************************************************************




TCP首部 固定20B
TCP报文段:TCP首部+TCP数据部分(http数据)
IP首部:IP首部+IP数据部分(tcp报文段)

三次握手:创建连接
第三次握手的时候,可以携带数据。前两次握手不能携带数据。
四次挥手:关闭连接
链接往返时间 2MSL 报文最大生存时间  存在等待时间


TCP数据包 丢包
10 *1024 *1024 B / 1400
TCP数据报的组装

《《《《《《《《《《《收到TCP数据包以后,操作系统进行还原 应用程序不会直接处理TCP数据包》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》





TCP可靠传输:
保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的
丢失 快速重传 有缺点(2号报文丢失是重传2号报文 还是重传 2、3、4、5呢?)
发送三次 如果没确定 则重新发送



优化:
SACK 告诉发送方哪些数据丢失 哪些数据提前收到


**********************************************************************************************
流量控制: 发送报文的 接收 发送长度
接收窗口:服务器
拥塞窗口:客户端这边发送的
三次握手时确定
流量控制(主机、服务器)       



*****************************************************************************************
      拥塞控制
*   慢开始/拥塞避免
*   快重传 快恢复

************************************************************************************************8


TCP分包
以太网数据包 大小时固定的 (package)

TCP最大负载 1400字节左右
——————————————》数据大了要分包     每个分包都要加首部(20字节)《《————————————————


1. 以太网数据包(packet)的大小是固定的,最初是1518字节,后来增加到1522字节。其中,1500字节是负载(payload),22字节是头信息(head)。

2. IP 数据包在以太网数据包的负载里面,它也有自己的头信息,最少需要20字节,所以 IP 数据包的负载最多为1480字节。

3. TCP 数据包在 IP 数据包的负载里面。它的头信息最少也需要20字节,因此 TCP 数据包的最大负载是 1480 - 20 = 1460 字节,称为**MSS(Maximum Segment Size)**。由于 IP 和 TCP 协议往往有额外的头信息,所以 TCP 负载实际为1400字节左右。


*****************************************************************************************************
如果分了100个包 能一起发送吗??????????????????????????
可靠传输    流量控制


网络层协议
IP协议
ARP地址解析协议 RARP 逆地址解析协议
网际报文控制协议 ICMP (ping)
网际组管理协议 **I****GMP**



IPv4
32位 4字节
网络号 主机号 点分十进制
A 8 +24 1.0.0.0 ~127
B 16 +16 128~191
C 24 +8 192 ~223



子网划分:
主机号 = 子网号+主机号
主机号 全0 全1 不能用
子网掩码 假如 一个子网需要4个不知4个主机
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
那么子网掩码是多少呢

点分10进制 只有最后2位主机号变化
把网络号全部置为1 主机号不变的置为1 变得2位为0
得到 255.255.255.252

判断一个ip是不是属于一个网段
192.168.0.4 点分10进制 发现 主机号变化超过3位
上边变化主机只限制2位

A类默认子网掩码 255.0.0.0
B 类 255.255.0.0
C 类 255.255.255.0

《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《子网掩码 另一种表示 CIDR 表示法192.168.0.0/30》》》》》》》》》》》》》》》》》》》》》》》》》》

30代表着子网掩码30个1
192.168.0.3 主机号是全1的 广播地址   ping 的话 都会ping到
全 0 表示网段



子网掩码 中全1 的部分对比ip 对应不变 18
子网掩码 全0 的 就是可变位


******************************************************************************************
DHCP协议 自动分配 ip
应用层协议DHCP
家用路由器 就是DHCP服务器
公网地址、内网地址
家里电脑内网地址
家里电脑发送tcp头部 源ip就是本机的内网地址
NAT 网络地址转换(一般路由器有安装)
NETwork Adress Translation
家用电脑发送数据包——> 到路由器——>源私有ip转为对外ip(对外端口)(运营商外网)——>在替换成正在外网ip
ARP 协议 决定下一跳往哪走
32位IPv4地址和以太网48位MAC地址(硬件地址)的映射
ARP 高速缓存 每台主机都有 存在了一些
IP地址——物理地址的映射表
链路层 帧 物理层 光信号 电信号


_____________________________________________________________
问题:
2台电脑仅通过网线直接连接,都设置的是自动获取IP地址,为什么相互ping不通呢?
因为缺少dhcp服务器,自动获取ip是由dhcp服务器来分配ip的,在家用路由器里面内置了这个程
序。两台电脑网线直连,双方都没有安装dhcp服务器,也就没有人来决定ip怎么分配。最简单的就
是手动设置静态ip,两台电脑在一个网段就可以ping通。
__________________________________________________________________




**********************************************************************************************888
http /1.1
http2 https 一个tcp链接可以传送多个请求 哇哇哇
有 : 号的 是http/2.0 https   请求标头
http3 将不会使用tcp 使用 udp
http/2 因为并发请求 Stream
https 默认端口443
***************************************************************************************************8



公钥 证书https 第一次请求 客户端拿到公钥
然后返回给服务器 讲已经收到证书了
服务器私钥 东西解密



SSL/TSL协议
整个握手阶段全部结束
客户端与服务器进入加密通道 完全使用普通的http协议 只不过用“会话加密”加密内容

http请求可以并行吗
multiplexing (多路复用)

网卡 原因排查
上一篇 下一篇

猜你喜欢

热点阅读