http协议
发布日期:2021-08-21 12:05:59 浏览次数:2 分类:技术文章

本文共 2213 字,大约阅读时间需要 7 分钟。

python网络编程

0. http协议

http协议是浏览器和网站之间进行数据交流的方式

两大部分:请求部分、响应部分

请求部分:

请求行 	GET / HTTP/1.1	请求头	Host: www.baidu.com	Connection: keep-alive	Cache-Control: max-age=0	Upgrade-Insecure-Requests: 1	User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36	Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8	Accept-Encoding: gzip, deflate, br	Accept-Language: zh-CN,zh;q=0.9	请求体	name:xxx	pwd:xxxx复制代码

响应部分:

响应行	HTTP/1.1 200 OK	响应头	Connection: Keep-Alive	Content-Encoding: gzip	Content-Type: text/html;charset=utf-8	Date: Sun, 30 Dec 2018 02:34:03 GMT	Expires: Sun, 30 Dec 2018 02:34:03 GMT	Server: BWS/1.1	响应体		
html标签复制代码

1. 简述TCP和UDP的区别以及优缺点?

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息。

  • 优点:UDP速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送
  • 缺点:UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数 据是否会正确接收,也不重复发送,不可靠。

TCP是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手

  • 优点:TCP在数据传递时,有发送应答、超时重传、阻塞等控制机制,能保证数据正确性,较为可靠。
  • 缺点:TCP相对于UDP速度慢一点,要求系统资源较多。

2.详述三次握手和四次挥手过程?

三次握手:

  1. 建立连接时,客户端发送SYN包到服务器
  2. 服务器收到请求后,会向客户端发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。
  3. 客户端收到服务器的SYN+ACK包,向服务器发送一个序列号(seq=x+1),确认号为ack(客户端)=y+1,此包发送完毕,客户端和服务器进入ESTAB_LISHED(TCP连接成功)状态,完成三次握手

四次挥手:

  1. 首先,客户端发送一个FIN,用来关闭客户端到服务器的数据传送,然后等待服务器的确认
  2. 服务器收到这个FIN,它发送一个ACK,确认ack为收到的序号加一。
  3. 关闭服务器到客户端的连接,发送一个FIN给客户端
  4. 客户端收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加一。客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,才进入CLOSED状态。
  5. 服务器只要收到了客户端发出的确认,当前连接立即进入CLOSED状态。

3.为什么TIME_WAIT状态需要经过2*MSL(最大报文段生存时间)才能返回到CLOSE状态?

虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

4. HTTP协议状态码有什么用,列出你知道的 HTTP 协议的状态码

通过状态码告诉客户端服务器的执行状态,以判断下一步该执行什么操作。 常见的状态机器码有:

  1. 100-199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。
  2. 200-299:表示服务器成功接收请求并已完成处理过程,常用200(OK请求成功)。
  3. 300-399:为完成请求,客户需要进一步细化请求,如302(所有请求页面已经临时转移到新的url),304、307(使用缓存资源)。
  4. 400-499:客户端请求有错误,如常用404(服务器无法找到被请求页面),403(服务器拒绝访问,权限不够)。
  5. 500-599:服务器端出现错误,常用500(请求未完成,服务器遇到不可预知的情况)

7. HTTP常见请求头?

  1. Host(主机和端口号)
  2. Connection(链接类型)
  3. Upgrade-Insecure-Requests(升级为HTTPS请求)
  4. User-Agent(浏览器名称)
  5. Accept(传输文件类型)
  6. Referer(页面跳转处)
  7. Accept-Encoding(文件编解码格式)
  8. Cookie (Cookie)
  9. x-requested-with:XMLHttpRequest (是Ajax异步请求)

转载于:https://juejin.im/post/5c2caca9f265da6166249545

转载地址:https://blog.csdn.net/weixin_33717298/article/details/93178304 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:后端开发应该掌握的Redis基础
下一篇:iOS初级开发学习笔记:贝塞尔曲线的绘制学习

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月02日 12时59分01秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

c语言sin函数近似值,用泰勒公式求sin(x)的近似值 2021-06-24
c 语言登录系统源代码,c语言源代码---------------个人图书管理系统 2021-06-24
android线程通信方式,Android 主线程和子线程通信问题 2021-06-24
cps1 cps2 android,图文教程:CPS1和CPS2模拟器使用 2021-06-24
在线设计 html5 表单,html5注册表单制作-表单制作-小程序表单制作 2021-06-24
android小闹钟课程设计,《小闹钟》教学设计 2021-06-24
mysql文件系统_MySQL文件系统先睹为快(1) 2019-04-21
nums在python_程序找到一对(i,j),其中nums [i] + nums [j] +(i -j)在Python中最大化?... 2019-04-21
jquery后台内容管理_教育平台项目后台管理系统:课程内容模块 2019-04-21
grouping函数 mysql_sql聚合函数有哪些 2019-04-21
python os.walk如何不遍历隐藏文件_python 获取文件下所有文件或目录os.walk()的实例... 2019-04-21
python 股票估值_【中金固收·固收+】隐藏价值的角落:限售股AAP估值及Python实现方法(上)... 2019-04-21
java文档生成_Java文档自动生成 2019-04-21
java 共享目录_java 操作windows 共享目录方法介绍 2019-04-21
java 监控 宕机_JAVA监测tomcat是否宕机,控制重启 2019-04-21
catch that cow java_POJ3278——Catch That Cow 2019-04-21
java integer 不变模式_Java代码的变与不变 2019-04-21
java guava 使用_Java8-Guava实战示例 2019-04-21
python barrier option pricing_《Python金融数据分析》书内代码实战与讲解(二)金融衍生物定价... 2019-04-21
java自带工具_深入了解Java JDK自带工具,包括javac、jar、jstack等,实用~ 2019-04-21