2021-01更新 网络传输控制层,网络层,链路层的简要理解1
1:应用层
1.1
2:传输控制层
面向连接的可靠的传输协议
2.1 建立连接
程序会以符号代表此socket,通过上面两个队列进行 读和写 其内存数据
2.2 开辟/关闭资源
开辟资源(tcp三次握手)
关闭资源(tcp四次挥手)
C -> S (clinet请求fin 到server断开连接)
C <-S (server ack+fin 到clinet)表示收到消息
C <-S (server fin 通知准备断开连接)
C –>S (clinet ack 应答断开)
3:网络层
从哪发—》发到哪(IP route)
4:链路层
Client->HR(路由器)-》L(运营商)-》ER(目标的路由器)-》Server
Mac地址
5:物理层
Eth0一个网卡可用65535; n个网卡 n*65535端口
发送出去,必须网卡出去
删除mac地址,gateway会内网whois 找mac地址
HTTPS
80传递铭文,443传递密文,如果自签证书一版使用对称/非对称加密,但是特别安全的,利用机构颁发证书,默认会安装到本地机器信任链管理,;
https最核心理论就是通过ca.私钥内容是服务器端公钥+域名+公钥的摘要通过加密算法生成密文(证书)等信息发送到服务端
CA这个能保证:client收到的数据一定是ca.server发出来的,反之亦然,即时被抓包了,没有ca的私钥,只能查看不能修改并发送到clinet;
这也是为什么游览器会提示自签的证书游览器提示不安全;因为自签的证书当server要发送数据到clinet,涉及到公钥证书怎么内置到clinet,只有世界公认机构(交钱的)才会被游览器信任,另外一旦通过网络传输把自签公钥传client可能会被拦截; 这就是个人理解流程
经过ca颁发的的证书,在clinet请求server过程中,c公钥,会通过ca.
http前世今生,摘自官网说明http://www.faqs.org/rfcs/rfc2616.html
超文本传输协议(HTTP)是应用程序级
分布式,协作式超媒体信息协议
系统。万维网已在全球范围内使用HTTP
自1990年以来的信息倡议。HTTP的第一个版本,
称为HTTP / 0.9,是用于原始数据传输的简单协议
跨互联网。RFC 1945 [6] 定义的HTTP / 1.0进行了改进
通过允许消息采用类似MIME的格式来实现协议
消息,其中包含有关传输的数据的元信息,以及
请求/响应语义上的修饰符。但是,HTTP / 1.0确实
没有充分考虑到等级制度的影响
代理,缓存,对持久连接的需求或虚拟
主机。此外,未完全实施的扩散
自称“ HTTP / 1.0”的应用程序需要
协议版本更改,以便进行两个通信应用程序
确定彼此的真实能力。
该规范定义了称为“ HTTP / 1.1”的协议。
该协议包含比HTTP / 1.0中更严格的要求
为了确保可靠地执行其功能。
实用信息系统需要比简单更多的功能
检索,包括搜索,前端更新和注释。HTTP
允许一组开放式的方法和标头,用于指示
请求的目的[47]。它建立在参考学科上
由统一资源标识符(URI)[3]提供,作为位置
(URL)[4]或名称(URN)[20],用于指示
方法将被应用。消息以类似于以下格式传递
多用途定义的Internet邮件[9]使用的
Internet邮件扩展(MIME)[7]。
HTTP也用作通用协议,用于
用户代理和其他Internet系统的代理/网关,包括
SMTP [16],NNTP [13],FTP [18],Gopher [2],
和WAIS [10]协议。这样,HTTP允许基本的超媒体
访问来自各种应用程序的资源。
multipart / form-data 说白了就是说人家食古不化嘛 结果自己嫩的不行学酥
3.7.2多部分类型
MIME提供了许多“多部分”类型-的封装 单个邮件正文中的一个或多个实体。所有多部分 类型共享通用语法,如RFC 2046的 5.1.1节所定义 [40],并且必须包括边界参数作为媒体类型的一部分 值。消息主体本身就是一个协议元素,必须 因此,仅使用CRLF表示身体部位之间的换行。 与RFC 2046不同,任何多部分消息的结尾都必须是 空 HTTP应用程序不得传输结尾(即使 原始的多部分包含结尾)。这些限制存在于 为了保留多部分消息的自定界性质- 正文,其中消息正文的“结尾”由 结束多部分边界。 通常,HTTP对多部分消息主体的处理与 任何其他媒体类型:严格作为有效负载。一个例外是 出现在206中的“ multipart / byteranges”类型(附录19.2) (部分内容)响应,将由某些HTTP解释 缓存机制,如13.5.4和14.16节所述。在所有 在其他情况下,HTTP用户代理应遵循相同或相似的规定 收到多部分类型时,作为MIME用户代理的行为。 多部分邮件的每个正文部分中的MIME标头字段- 除了对HTTP的定义外,主体对HTTP没有任何意义 他们的MIME语义。 通常,HTTP用户代理应该遵循相同或相似的内容 收到多部分类型时,作为MIME用户代理的行为。 如果应用程序收到无法识别的多部分子类型,则 应用程序必须将其视为等同于“多部分/混合”。 注意:“ multipart / form-data”类型已经特别定义 用于携带适合通过POST处理的表格数据 请求方法,如RFC 1867 [15]中所述。
事故还原
视频分包流解析后,要通过接口给其他人用,说:让我“按照标准的http文件上传 multipart/form-data 协议”post给他,我说那字段定义file不如直接定义byte[]喽,省去了写文件操作。
【学酥】null 2020/8/10 14:24:27
子悦 base64首先多50%数据,还要花费大片内存和cpu解析
@子悦 是的,他们也说又大又长
【管理员】yedajiang44.com 2020/8/10 14:24:57
@null 你这个射过去的就是multipart/form-data啊
【学酥】子悦 2020/8/10 14:25:00
http multipart/form-data 一般是会把文件数据缓存在磁盘的 不管多大的文件能都ok
【学酥】子悦 2020/8/10 14:25:17
你要是用base64 ,你穿个几个GB的文件试试
@null 你一句公司老人说白了就是说人家食古不化嘛 结果自己嫩的不行学酥】@子悦 2020/8/10 14:27:56
那就是说从设备上接收到: 无论图片,视频,音频只要是文件多媒体类型的byte流,都生成file通过multipart/form-data发出去了(跨进程通信)
你按照你公司老人说的http multipart/form-data方式【靓仔】鸡汤王子 2020/8/10 15:15:03
@null http multipart/form-data不需要经过中间文件的。【靓仔】鸡汤王子 2020/8/10 15:15:44
你自己模拟个TCP服务器,看看通过浏览器上传文件提交上来的数据就知道了,它是通过一个ASCII码的字符串分割开来,作为开始标记,中间还是byte[]数据的。
【靓仔】鸡汤王子 2020/8/10 15:16:11
如果是直播流的话,content-length就不好弄了。
【学酥】null 2020/8/10 15:26:49
鸡汤王子 你自己模拟个TCP服务器,看看通过浏览器上传文件提交上来的数据就知道了,它是通过一个ASCII码的字符串分割开来,作为开始标记,中间还是byte[]数据的。
@鸡汤王子 当时我想的:http post参数里面设置个类型byte[]字段替换multipart/form-data file类型字段; 这拍脑袋想法是从rabbitMq里面的body直接设置byte[]进行传输,不过也不清晰 mq里面body具体怎么实现的,
【靓仔】鸡汤王子 2020/8/10 15:27:08
毳线。
【靓仔】鸡汤王子 2020/8/10 15:27:28
所有的数据都是byte,计算机里最小的存储单元是byte,最小的操作单元是bit。。。
【靓仔】鸡汤王子 2020/8/10 15:27:40
你所谓的file或string或list,都是byte的抽象结构而已。。。
【管理员】yedajiang44.com 2020/8/10 15:28:30
哎。。。为什么这么多人对http了解少之又少?
【学酥】null 2020/8/10 15:29:08
嗯啊,然后想byte被网络编译为byte 应该 比file,String到byte更快些吧
【管理员】yedajiang44.com 2020/8/10 15:30:14
你写byte,只要按照协议走,就行,你现在所说的file都是应用层面上的
【靓仔】鸡汤王子 2020/8/10 15:30:30
【靓仔】鸡汤王子 2020/8/10 15:30:58
【靓仔】鸡汤王子 2020/8/10 15:31:10
比如我上传上面的一张图片,实际上发送过去的数据就是下面这样的。
【靓仔】鸡汤王子 2020/8/10 15:31:58
下面图里的abcdef,是因为它属于ASCII码范围内,所以它能够直接以文字的形式显示出来,如果它不是这个范围内的,那它就会显示为乱码,因为我这个编辑器在尝试把这个数据当作是文本文件,
【靓仔】鸡汤王子 2020/8/10 15:32:10
如果你把它当二进制文件,那它就是~~~反正所有的都是。
我先把分包的视频流byte[] 在内存里聚合然后放到一个file里,用multipart发出去;晚上加个班研究下 不需要经过中间文件 直接传输的,再加个班 网络通信再来两个小时精通课