HTTP和TCP协议,三次握手四次挥手

一、HTTP是什么
http(HyperText Transfer Protocol),超文本传输协议,是互联网上最广泛的一种网络传输协议,所有www文件都必须遵守的一个标准,是以ASCII码传输,建立在TCP/IP协议上的应用层规范。用于从www服务器传输超文本到本地浏览器的传输协议。HTTP是采用明文形式进行数据传输。
http可以说成是一种客户端和应答服务器端请求和应答的标准((TCP)。通过浏览器或其他工具(postman),客户端发起一个到应答服务器上指定端口的http请求,或者反过来,服务器给客户端发送一个回应。在客户端和应答服务器端可能存在多个中间层,比如代理、网关或者隧道。

二、HTTP请求报文
http请求报文是指客户端到服务器端的消息,客户端通过发送http请求向服务器请求对资源的访问。包括三个部分:请求行、请求头、请求数据。请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT这几种。
1.请求行:包含请求方法、url和协议的版本,用空格分隔,例如:GET/sample.jsp HTTP/1.1
2.请求头:包含有关客户端环境及请求正文的信息,如请求正文长度、浏览器所用编码格式等,
Host localhost
Content-Type application/x-www-form-urlencoded
Accept /
Connection keep-alive
Cookie
User-Agent Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Language en;q=1
Content-Length 432
Accept-Encoding gzip, deflate
3.请求体:即客户端发送给服务器的内容,可谓空,GET请求就没有请求数据
三、HTTP应答报文
http应答报文是指服务器回应http请求,发送给客户端的消息。也包括三个部分:状态行、响应头部、响应数据。
1.状态行:协议版本、状态码、简要描述,例如HTTP/1.1 200 OK
2.响应头部: 必须指明content-Type,其他可选
3.响应数据:即服务器回应客户端的内容
常见状态码:
1xx:指示信息-表示请求已接收,继续处理。
2xx:成功-表示请求已被成功接收。
3xx:重定向-要完成请求必须进行更进一步操作。
4xx:客户端错误-请求有预发错误或请求无法实现。
5xx:服务器错误—服务器未能实现合法的请求。

四、HTTP请求与响应步骤
http请求和响应,就是计算机之间的通信。
一开始的HTTP协议中每进行一次HTTP通信就断开TCP链接。
在这里插入图片描述
在同时请求很多资源时,每次连接就会造成无谓的TCP连接的建立和断开,增加了通信量的开销。
后面出现了持久链接HTTP keep alive或者HTTP connection reuse。只要任意一端没有明确提出断开链接,则保持TCP状态。
在这里插入图片描述
既减少了TCP链接重复建立和断开的时间开销,又减轻了服务端的负载

具体步骤:
1.建立链接
先解析DNS把localhost变成ip(127.0.0.1),然后根据127.0.0.1和端口号8080简历socket.即三次握手建立TCP链接,确定通讯正常.
2.发送请求命令
socket建立好之后,客户端开始向web服务器发送请求命令(GET/POST)
3.发送请求头和请求
客户端先发送与自身相关的信息,再发送空行表示请求头发送完毕,如果是post,则继续发送请求正文。
4.回传状态行
应答第一步,发送协议版本和状态码
5.回传应答头
应答第二部,先发送自身相关信息、Content-Type以及被请求的文档,在发送空行表示应答头发送完毕。
6.回传应答正文
一次会话完成,如果设置了Connection:keep-alive则TCP连接不关闭,否则关闭

五、TCP/IP协议
TCP/IP协议簇是一组不同层次的多个协议的组合,通常被认为是一个五层协议系统(链路层、网路层、传输层、应用层、物理层),与OSI的七层模型(应用层、表示层、会话层、传输层、网路层、链路层、物理层)相对应。
在这里插入图片描述
1.应用层
应用层决定了向用户提供应用服务时通信的活动。TCP/IP协议簇内预存了各类通用的应用服务器.包括HTTP,FTP,DNS,SMTP
2.传输层
主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议簇中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供高可靠性能的数据通信。它所做的工作包括把所有应用程序交给他的数据分成合适的大小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于传输层提供了高可靠性的端到端通信,因此应用层可以忽略这些细节,TCP采用了超时重传、发送和接受端到端的确认分组等机制。
UDP则为应用层提供一种非常简单的服务,只是把称作数据报的分组从一台主机发送到另外一台主机,但并不保证数据报能到达另一端。一个数据报是指从发送方传输到接收方的一个信息单元.UDP协议所需要的可靠性必须由应用层来提供。
3.网络层
也称互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层包括IP协议(网际协议)、ICMP(interent互联网控制报文协议)、IGMP(internet组管理协议)
(1)IP是一种网络层协议,提供的是一种不可靠的服务,只是尽可能地把分组从源节点送到目的节点,但是并不提供任何可靠性保证。同时被TCP和UDP使用,TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
(2)ICMP是IP的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
(3)IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。
4.链路层
也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或者其他任何媒介传输)的物理接口细节。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(以太网和令牌环网),使用的特殊协议,用来转换IP层和网络接口层使用的地址。
5.物理层
实际最终信号的传输是通过物理层实现,通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有:集线器、中继器、调制解调器、网线、双绞线、同轴电缆等物理介质。
在这里插入图片描述
六、相关知识点

1. HTTP和HTTPS

在这里插入图片描述
HTTPS是HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。HTTPS的主要作用是:

	(1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全。
	(2)对网站服务器进行真实身份认证。

二者区别:
	(1)HTTPS是加密传输,HTTP是明文传输
	(2)HTTPS需要用到SSL证书,HTTP不用
	(3)HTTPS比HTTP更安全,对搜索引擎更友好
	(4)HTTPS标准端口为443,HTTP为80
	(5)HTTPS基于传输层,HTTP基于应用层
	(6)HTTPS在浏览器显示绿色安全锁,HTTP没有

在这里插入图片描述
2、TCP三次握手,为什么?
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的链接服务,链接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换TCP窗口大小信息。
第一次握手:建立连接,客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到SYN报文段,服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number +1);同时,自己还要发送SYN请求信息,将SYN+1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK报文段,然后将Acknowledgment Number设置为y+1,想服务器发送ACK报文段,这个报文段发送完毕后,客户端和服务器端都进入了ESTABLISHED状态完成三次握手。
原因:为了防止已失效的连接请求报文段突然又传送到了服务器端,因而产生错误。例如:client发出的第一个连接请求报文段没有丢失,而是在某个网络节点长时间滞留,以致延误到连接释放以后某个时间点到达sever,本来这是一个早已失效的报文段,但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用”三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会发送数据。但是server已经建立连接,并一直等待client发送数据。这样就会造成server资源浪费.
在这里插入图片描述
3.TCP四次挥手,为什么?
当客户端和服务端通过三次握手建立了TCP连接后,当数据传输完毕,肯定是要断开TCP连接的,就需要四次挥手。

第一次挥手:主机1(可以是客户端也可以是服务端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态,这表示主机1没有数据要发送给主机2了,主机2收到了主机1发送的FIN报文段,主机2会关闭读通道;	

第二次挥手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number +1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,同意关闭请求,主机1收到报文段后关闭主机1的写通道;

第三次挥手:主机2向主机1发送FIN报文段,请求关闭连接,主机2进入LAST_ACK状态,主机1收到FIN报文段后会关闭自己的读通道;

第四次挥手:主机1收到主机2的FIN报文段后,向主机2发送ACK报文段,主机1进入了TIME_WAIT状态;主机2收到主机1的ACK报文段后,会直接关闭写通道,关闭连接,主机1则在等待2msl后关闭;

原因: TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1没有数据要发送了,主机1告诉主机2,它的数据已全部发送完毕了;但是这个时候主机1可以接受来自主机2的数据,当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以向主机1发送数据的,当主机2也发送FIN报文段时,就表示主机2也没有数据要发送了,这时候主机1就知道主机2也没有数据发送了,两个主机之间就可以彻底断开链接了

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值