浅谈HTTP和TCP三次捂手,四次挥手

HTTP概念

  • HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

  • HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

OSI七层模型

在这里插入图片描述

什么是DNS? — 域名系统(服务)协议

DNS 是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。
作用:就是把域名(比如:www.baidu.com) 解析为ip地址,

DNS怎么找到域名?

  • DNS解析采用的是递归的查询的方式,过程是:先找DNS缓存 => 缓存找不到就去找根域名服务器 => 根域名又会去找下一级
    这样的递归查找之后,返回给浏览器

面试题之:一次完整的http服务过程

把题目可以解析为:在web浏览器输入:www.baidu.com 回车后会发生什么?

  • 1:首先www.baidu.com 这个网址进行DNS域名解析,得到相应的IP地址
  • 2:根据这个IP找到相应的服务器,发起TCP三次握手
  • 3:建立TCP链接之后,发起HTTP请求
  • 4:服务器相应HTTP请求,服务器把html代码发送给浏览器
  • 5:浏览器解析html代码,并请求html之中的资源(比如:css,img等) 这是先得到html,再请求其他的
  • 6:浏览器对页面进行渲染,呈现给用户
  • 7:服务器关闭TCP连接(http连接)

注意点1:DNS怎么找到域名?

  • DNS解析采用的是递归的查询的方式,过程是:先找DNS缓存 => 缓存找不到就去找根域名服务器 => 根域名又会去找下一级
    这样的递归查找之后,返回给浏览器

注意点2:为什么HTTP协议要基于TCP来实现?

  • TCP是端到端的可靠的面相连接协议,HTTP基于传输层TCP协议不用担心数据传输的各种问题(大概发送错误会重传)
  • tcp是比http更为底层的一种连接协议,所以想要发起http请求,就像需要建立tcp协议!

注意点3:浏览器怎么对页面渲染的?

  • 1:首先把html解析为DOM树
  • 2:解析CSS文件构造成渲染数
  • 3:边解析,便渲染
  • 4:JS是单线程运行,JS可能会修改DOM结构,意味着JS执行完成前,后续所以资源的加载是没有的必要的,所以js是单线程,阻塞后续资源的下载!

注意点4:重绘
+ 是在一个元素的外观被改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。比如改变某个元素的背景色、文字颜色、边框颜色等等

注意点5:重排
+ 当渲染树的一部分必须更新并且节点的尺寸发生了变化,浏览器会使渲染树中受到影响的部分失效,并重新构造渲染树。
在这里插入图片描述

HTTPS

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer)
是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。
HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。
这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。

TCP是什么?

TCP(Transmission Control Protocol)传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
为了可靠,TCP采用的是端到端通信,这个端到端指传输层的通信,实现通信双方机器中进程之间的通信

TCP报文

在这里插入图片描述

TCP的状态

TCP的状态分为以下6种,SYN, FIN, ACK, PSH, RST, URG.

SYN的解释

SYN(synchronous建立联机)
SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。

seq的解释

Sequence number(顺序号码),就是当客户端和服务器链接的时候,会产生一个序列号seq

ACK的解释

ACK(acknowledgement 确认)
即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。
在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据包(ack)

FIN的解释

FIN(finish结束)

PSH表示有 DATA数据传输,
RST表示连接重置。

TCP的三次捂手

在这里插入图片描述

  • 1:客户端(client)向服务器(server)发起一个建立连接的请求
    会使用到SYN,SYN代表的是客户端向服务器发送的消息,当SYN=1(代表建立连接),建立连接后,同时生成一个随机的32位的序列号(seq 为随机数 假如为10000)
  • 2:接受到客户端的连接请求,做出响应,先把SYN设置为1,也会随机生成一个序列号(seq 假如为20000),
    还有更为重要的是ACK置1,代表的是客户端给服务器发送消息,我给你的响应式这个消息是有效的,确认有效后,会携带一个确认序号(ack),ack= seq+1(10000 +1)
  • 3:两个连接后,代表着客户端有效了,但是服务器还是未知自己发送的消息是否被接受到,
    于是客户端需要在发送消息,代表自己接受到,于是先ACK=1,并且携带一个确认消息ack=20001,

TCP的四次挥手

在这里插入图片描述

  • 1:客户端想要结束连接的时候,会发起消息,使得FIN=1,代表客户端要结束进程了,而这时候的seq就不再是随机数,而是在这几次搭建连接的时候(seq=25368),不断增长的seq序列号
  • 2:服务端接收到客户端的结束消息后,给与确认ACK=1,ack= 25369,客户端结束消息发送,服务器知道了!
  • 3:但是服务端还是会给客户端再发送一个消息,FIN=1代表我也要结束连接了,随机生成一个序列seq = 10568
  • 4: 客户端接收到服务端的结束消息后,再给与确认消息,ACK=1,seq=10569
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值