知识点:http协议:它是基于tcp协议的,浏览器访问服务器,服务器把资源回给浏览器,这个过程都是遵循http协议的,否则无法完成,http早些年是1.0版本,现在基本上都是1.1版本了,俩个版本的区别就是1.0使用的是短连接,早些年的网站比较简单,短连接通信没啥大问题,但是现在的网站各种炫酷复杂,所以使用1.1版本的长连接,提高通信效率。那么,他的具体通信过程是怎样的呢?也就是我们常说的三次握手和四次挥手。

1、直接看图:

三次握手:
1:浏览器告诉服务器,我要和你建立链接,呆着位码syn=1和一个随机的数据包seq1_num=123发给服务器.
2:服务器收到1中的消息后,也要告诉浏览器我收到了,服务器会带着ack=1和ack2_num=seq1_num+1,还有自己的随机数据包seq2_num=789会送给浏览器.
3:浏览器收到服务的响应数据,会判断ack2_num是否在自己发过去的seq1_num上加了1,是的话,他要给服务器回话,告诉服务器,这些数据我验证了,是对的,浏览器会带着服务器发过来的随机码seq2_num+1和ack发过去,服务器收到后确认seq2_num+1和ack的值,建立连接.
四次挥手:
一般断开连接都是浏览器主动先断开的,所以,

1:浏览器调用close()关闭发通道,告诉服务器,我不会再给你发数据了.

2: 服务器收到后,会关闭发送消息的方法(socket.recv())并回送给浏览器我收到你的消息.
3:同时关闭服务器的接收通道并回送给浏览器.
4:浏览器收到服务器的消息后关闭收消息的通道,并回送一条确认消息给服务器告诉服务器它收到了,服务器收到后,关闭服务器发送通道.

web服务-1、http协议的三次握手四次挥手的更多相关文章

  1. python摸爬滚打之----tcp协议的三次握手四次挥手

    TCP协议的三次握手, 四次挥手 三次握手过程 1, 服务器时刻准备接受客户端进程的连接请求, 此时服务器就进入了LISTEN(监听)状态; 2, 客户端进程然后向服务器发出连接请求报文, 之后客户端 ...

  2. tcp协议:三次握手四次挥手详解-转

    https://www.cnblogs.com/welan/p/9925119.html

  3. 网络架构,七层协议,三次握手四次挥手,socket套接字简单编程

    一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...

  4. OSI七层协议&TCP协议(三次握手四次挥手)

    今日内容 python 基础回顾 软件开发架构 网络理论前戏 OSI 七层协议(五层) TCP协议 三次握手与四次挥手 UDP协议 内容详细 一.python 基础回顾 1.基本数据类型 整型 int ...

  5. TCP协议—三次握手四次挥手的原理<转>

    三次握手四次挥手的原理   TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的.三 ...

  6. TCP/IP协议 | TCP协议 | UDP协议 | 三次握手四次挥手

    TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP ...

  7. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器    定义:       ...

  8. 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

  9. [na]TCP的三次握手四次挥手/SYN泛洪

    1.TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占32位, ...

随机推荐

  1. Url解码和编码 escape()、encodeURI()、encodeURIComponent()区别详解

    Server.UrlDecode;解码 Server.UrlEncode;编码 url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value ...

  2. Confluence 6 从一个 XML 备份中导入一个空间

    有下面 2 中方法可以导入一个空间——通过上传一个文件,或者从你 Confluence 服务器上的一个目录中导入.上传文件仅仅是针对一个小站点的情况.为了取得最好的导入结果,我们推荐你从服务器上的目录 ...

  3. 一个简单的 vue.js 实践教程

    https://segmentfault.com/a/1190000006776243?utm_source=tuicool&utm_medium=referral 感觉需要改善的地方有: ( ...

  4. opencv 图像矫正

    四个坐标系的转换:https://blog.csdn.net/humanking7/article/details/44756073 标定和矫正:https://blog.csdn.net/u0134 ...

  5. 基于DBUtils实现数据库连接池

    小知识: 1.子类继承父类的三种方式 class Dog(Animal): #子类 派生类 def __init__(self,name,breed, life_value,aggr): # Anim ...

  6. Pandas模块:表计算与数据分析

    目录 Pandas之Series Pandas之DataFrame 一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的. 3.p ...

  7. Python基础之面向过程编程

    要求:在文件里递归找到关于包含“Python”内容的文件的绝对路径并打印出来 #定义阶段 import os,time def init(func): #装饰器的作用是使下面的生成器初始化,yield ...

  8. queryset优化 。。。。。exists()与iterator()方法

    exists()方法!! 判断queryset是否有值存在.exists()    只会查询一个字段 .正常会查所有!!! iterator()方法 objs = Book.objects.all() ...

  9. linux的systemctl服务及其使用

    一.systemd 系统初始化程序,系统开始的第一个进程,PID为1 二.systemctl命令 systemctl list-units    ##列出当前系统服务的状态 systemctl lis ...

  10. 论文阅读笔记二十:LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation(CVPR2017)

    源文网址:https://arxiv.org/abs/1707.03718 tensorflow代码:https://github.com/luofan18/linknet-tensorflow 基于 ...