一文带你了解网络协议

✨这里是小松猿的博客✨小松,欢迎您的到来~✨

🍅系列专栏:无🍅

✈️本篇内容: 网络协议

🍱本篇收录完整代码地址:无🍱

楔子

网络协议

1,tcp/ip

#tcp/ip协议族:计算机与网络设备之间互相通信,双方就必须基于同样的方法。比如:如何发现通信目标、由谁发起通信、使用什么语言通信、怎么结束通信都需要事先确定,

##所有这些都需要一种规则,这就是协议。协议中存在多种的内容;从电缆的规格到ip地址的选定方法,寻找异地用户的方法,建立通信的顺序,以及web页面显示需要处理的步骤等等

##像这样把与互联网相关联的协议集合起来统称为tcp/ip

#tcp/ip的分层:tcp/ip很重要的一个特点就是分层。按照层次分为以下四层:应用层,传输层,网络层和数据链路层

#分层的好处:如果互联网只由一个协议统筹,那么某一地方出问题,整体都会出现问题,无法使用;分层后,只需替换出现问题的或者需要修改的即可,而且分层后针对具体的设计也变得更为简单

#应用层:体系的最高层,应用进程间通信交互的规则,tcp/ip协议族预存了各类通用的应用服务,比如:

#ftp:文件传输协议

#dns:域名系统协议

#http:万维网应用协议

#smtp:电子邮件协议

#websocket:websocket协议

#以上几种是常用的几种,还有很多其他的协议,感兴趣的可以找找其他专业的书籍看看

#传输层:提供处于网络连接中的两台计算机间的数据传输,其中包括tcp和udp两种性质不同的协议

#tcp:传输控制协议,传输的单位为报文段,提供面向连接的,可靠的数据传输服务

#数据传输中为了传输方便,会将大块数据分割成报文段,而tcp协议能确认数据最终是否传送给对方为了准确传输,传输中采用了三次握手策略(这种手段可以理解为多次确认,来确保数据传输的可靠性)

#udp:传输单位为用户数据报,它是尽最大努力的提供数据传输服务,不保证可靠性

#网络层:又名网络连接层

#用来处理在网络上流动的数据包(封装)。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机并把数据包传给对方

#链路层:又名数据链路层,网络接口层

#处理连接网络的硬件部分。比如控制操作系统、硬件的驱动、网络适配器、光钎等

#数据的封装:用户端发送一个请求,从应用层开始,一直到链路层,每一层都会被打上该层所属的首部信息;反之,接收端在层与层之间传输时,每经过一层会去掉该层的首部信息,这种做法叫做封装

2,http/https

#http协议:http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端。

#请求体的构成:

#请求行:post /index.html HTTP/1.1

#请求方法:get,post,patch,put,delete,head等

#请求URL:资源定位

#http协议及版本:http 0.9、http 1.0、http 1.1、http 2.0

#请求头(Request Header)

#accept:请求报文可通过一个"Accept"报文头属性告诉服务端 客户端接受什么类型的响应。Accept: text/plain

#Accept-Charset:可接受的字符集 Accept-Charset: utf-8

#cookie:用户存取用户的session

#Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

#User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用

#Host:初始URL中的主机和端口。

#Connection:表示是否需要持久连接。如果Servlet看到这里的值为"Keep-Alive",或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接)

#请求正文

#请求头和请求正文之间是一个空行,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息

#username=cmc&password=1234或者{'username':'cmc','password':'1234'}等

#响应体构成:

#状态行:HTTP/1.1 200 OK

#http协议及版本:http 0.9、http 1.0、http 1.1、http 2.0

#响应状态码:

#1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...

#2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.

#3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。

#4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。

#5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。

#响应头:

#Access-Control-Allow-Origin:指定哪些网站可以跨域源资源共享,Access-Control-Allow-Origin: *

#Set-Cookie:服务端设置客户端HTTP cookie,Set-Cookie: UserID=itbilu; Max-Age=3600; Version=1

#Expires:指定一个日期/时间,超过该时间则认为此回应已经过期,Expires: Thu, 01 Dec 1994 16:00:00 GMT

#Server:服务器的名称 Server: nginx/1.6.3

#Content-Encoding:响应资源所使用的编码类型。 Content-Encoding: gzip

#Content-Language:响就内容所使用的语言 Content-Language: zh-cn

#Content-Length:响应消息体的长度,用8进制字节表示

#响应正文:

#服务器返回的内容,网页,图片,等等

#https协议:

#http缺点:

#通信使用明文(不加密),内容可能会被窃听

#不验证通信方的身份,因此可能遭遇伪装

#无法证明报文的完整性,所以有可能已被篡改

#某些特定web服务器和特定web浏览器存在安全漏洞

#https原理详解(裂墙推荐):http://blog.csdn.net/u014044812/article/details/79571927

3,websocket

#WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成,连接以后通过帧来通信。

#维基百科:https://zh.wikipedia.org/wiki/WebSocket

#推荐博文:https://www.cnblogs.com/lizhenghn/p/5155933.html

##https://www.zhihu.com/question/20215561

4,HTTP/2

#维基百科:https://zh.wikipedia.org/wiki/HTTP/2

相关推荐
weixin_4426434213 分钟前
推荐FileLink数据跨网摆渡系统 — 安全、高效的数据传输解决方案
服务器·网络·安全·filelink数据摆渡系统
阑梦清川27 分钟前
JavaEE初阶---网络原理(五)---HTTP协议
网络·http·java-ee
阿尔帕兹1 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
FeelTouch Labs1 小时前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
千天夜3 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
长弓三石3 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
xianwu5434 小时前
反向代理模块
linux·开发语言·网络·git
follycat4 小时前
[极客大挑战 2019]HTTP 1
网络·网络协议·http·网络安全
earthzhang20214 小时前
《深入浅出HTTPS》读书笔记(5):随机数
网络协议·http·https
xiaoxiongip6665 小时前
HTTP 和 HTTPS
网络·爬虫·网络协议·tcp/ip·http·https·ip