20191226-TCP的三次握手和四次挥手

  • 在浏览器中的地址栏内输入URL,就可以看到Web页面,即是客户端在浏览器地址内输入URL之后,信息会被送到某处,然后从某处获得的回复,内容就会显示在Web页面上

客户端:像这种通过发送请求获取服务器资源的Web浏览器等就叫做客户端-----》简单来说,客户端就是个人使用的电脑,而服务器就是服务器,通过电脑访问服务器上的资源,用的就是HTTP网络协议

  • Web页面是根据你在Web浏览器地址栏指定的url发送,Web浏览器从Web服务器获取文件资源等信息,然后在从服务器端返回在Web浏览器上显示出Web页面的。

Web浏览器作为客户端,一个为服务器,Web浏览器通过指定的访问地址获取服务器上的资源,服务器使用HTTP协议的通信返回到Web浏览器。

  • Web是建立在HTTP协议上通信的,HTTP为超文本传输协议作为规范(超文本转移协议),完成从客户端到服务器端等一系列工作流程,协议是指规则的约定

http协议

  • HTTP叫做超文本传输协议
  • 是TCP/IP协议的一个应用层协议
  • 用于定义Web浏览器与Web服务器之间的交换数据的过程

客户端连上web服务器后,若想获得web服务器中的某个web资源,需要遵循一定的通讯格式,HTTP协议用于定义客户端和web服务器端通讯的格式

在这里插入图片描述

3项www构建技术

  • SGML:Standard Generalized Markup Language
    标准通用标记语言
  • HTML:HyperText Markup Language
    超文本标记语言
  • HTTP:HyperText Transfer Protocol
    超文本传输协议
  • URL:Uniform Resource Locator
    统一资源定位符

1、把SGML作为页面的文本标记语言的HTML;
2、作为文档传递协议的HTTP;
3、指定文档所在地址的URL

Web客户端和服务器,Web内容存储在Web服务器上的,所使用的是HTTP协议,如果HTTP客户端发出请求,服务器会提供因特网中的数据,客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据

HTTP客户端和HTTP服务器共同构成了万维网的基本组件

  • Web服务器是Web资源的存储库
  • Web资源是Web内容的源头
  • Web资源可以包含任意内容,所有一切内容都是Web资源提供的

URI和URL

  • URI: 服务器资源名,为统一资源标识符(是世界范围内唯一的标识并定位信息资源)

  • URI分两种形式===>URL和URN

    • URL为统一资源定位符,描述了一台特定服务器上某资源的特定位置
    • URN为统一资源名,作为特定内容的唯一名称使用,与资源所在地无关。

协议(protocol)

计算机与网络设备要相互通信,双方就必须基于相同的方法,不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。这种规则就叫做协议

  • TCP/IP 是互联网相关各类协议族的总称
    -TCP/IP是指TCP和IP这两种协议
    -TCP/IP是在IP协议的通信过程中,使用到的协议族的统称

http是基于tcp协议的

TCP/IP 协议分层模型

TCP/IP协议族按层次分别为 应用层,传输层,网络层,数据链路层,物理层。可以按照不同的模型分4层或者是7层

分为5层:

  1. 应用层:应用程序收到传输层的数据后,接下来就是要进行解读,解读必须要先规定好格式,而应用层就是规定应用程序的数据格式,主要协议有HTTP等
  2. 传输层:该层为两台主机上的应用程序提供端到端的通信,传输层有两个传输协议为TCP(传输控制协议)和UDP(用户数据报协议)
  • TCP是一个可靠的面向连接的协议,能正确处理丢包,传输顺序错乱的问题,但是为了建立与断开连接,需要至少7次的发包收包,资源浪费,应用场景是对效率要求低,对准确性要求高或者要求有连接的场景
  • UDP是不可靠或者说无连接的协议,不管对方有没有收到,如果要得到通知,需要通过应用层,面向报文,传输效率高,应用场景是对效率要求高,对准确性要求低的。
  1. 网络层:决定如何将数据从发送方到接收方,是建立主机到主机的通信
    -使用 IP 协议,IP 协议基于 IP 转发分包数据
    -IP 协议是个不可靠协议,不会重发
    -IP 协议发送失败会使用ICMP 协议通知失败
    -ARP 解析 IP 中的 MAC 地址,MAC 地址由网卡出厂提供
    -IP 还隐含链路层的功能,不管双方底层的链路层是啥,都能通信

  2. 数据链路层:控制网络层与物理层之间的通信,主要功能是保证物理线路上进行可靠的数据传递

  3. 物理层:负责物理传输,与链路有关,也与传输的介质有关,将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换

越靠下越接近硬件

利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信,发送端会从应用层往下走,而接收端则是从链路层往上走的

  • 发送端在层与层之间进行传输的时候,每经过一层必须被打上该层所属的首部信息,反之,接收端在接收数据时,每经过一层,就会把对应的首部去掉,这种把信息包装起来的做法叫做“封装

在这里插入图片描述

TCP的三次握手与四次挥手

三次握手过程:

  1. 第一次握手是在建立连接,客户端发送连接请求报文段,把标有SYN的数据包发给服务器端即为接收端
  2. 第二次握手是服务器端即接收端收到客户端的SYN的报文段,同时发送标有SYN/ACK的数据包
  3. 第三次握手是客户端收到服务器端的SYN/ACK的数据包后,向服务器端发送标有ACK的数据包

当客户端和服务端通过三次握手建立了 TCP 连接以后,当数据传送完毕,断开连接就需要进行TCP的四次挥手。

四次挥手:

在这里插入图片描述

第1次挥手:

客户端-发送一个FIN,用来关闭客户端到服务器的数据传送

  • 客户端设置seq和 ACK ,向服务器发送一个 FIN=1报文段
  • 第一次挥手,FIN=1,seq=u)客户端进入 FIN_WAIT 状态
  • 表示客户端没有数据要发送给服务端了

第2次挥手:

服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 。和SYN一样,一个FIN将占用一个序号

  • 服务端收到了客户端发送的 FIN 报文段
  • 向客户端回了一个 ACK 报文段

第3次挥手:

服务器-关闭与客户端的连接,发送一个FIN给客户端

  • 服务端向客户端发送FIN 报文段
  • 请求关闭连接
  • 同时服务端进入 LAST_ACK 状态

第4次挥手:

客户端-发回ACK报文确认,并将确认序号设置为收到序号加1

  • 客户端收到服务端发送的 FIN 报文段后,向服务端发送 ACK 报文段,然后客户端进入 TIME_WAIT 状态
  • 服务端收到客户端的 ACK 报文段以后,就关闭连接
  • 此时,客户端等待 2MSL(指一个片段在网络中最大的存活时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端就可以关闭连接了

TCP/IP的报文头

报文(message):网络中交换与传输的数据单元,即站点一次性要发送的数据块,报文就是在各个系统之间进行请求和响应时用来交换信息的,还需要遵守规定好的格式

报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。

  • 多个系统之间需要通信的时候(如银行的ESB系统到网关系统再到银联系统)
  • 报文承担了装载数据,运输数据的功能,可能在这三个系统中报文的格式互不相同,但是承载的数据都是一样的

在这里插入图片描述

TCP头部报文:
**source port:**源端口号,指向本地端口(发送端)
**destination port:**目的端口号,指向远程端口(接收端)

  • 源端口号从发送端依据某种规定发送到接收端的目的端口号,不同的应用程序都有者不同的端口
  • 发送端会发送很多源端口号,对应接收端很多对应规则的目的端口号

Sequence Number: 序列号

用于TCP通信过程中,分段序列进行字节流的传输,接收端会根据这个编号进行再排序确认。

TCP有6种状态表示:

SYN建立联机
ACK确认
PSH传送
FIN结束
RST重置
URG紧急

分析TCP三次握手

首先客户端,服务端,TCP三次握手:

  • 握手过程中使用了TCP的标志,SYN和ACK
  • 初始化状态:客户端处于close关闭状态,服务器处于Listen监听状态

第1次握手:

  • 客户端发送 请求报文将 SYN=1 同步序列号和初始化 seq=x发送给服务端
  • 服务端从初始化状态,创建连接,等待客户端,确认接收后的状态为SYN_Receive
  • 这个时候 客户端处于等待状态为SYN_Send

第2次握手:

  • 服务器接 收到报文后(SYN=1,seq=x) 收到请求后请求报文变为同步序列号SYN=1,初始化序列号seq=1,确认号ACK=1,ack=x+1
  • 服务器为SYN_Receive状态发送端的状态为:SYN_Send

第3次握手:

  • 客户端收到服务端的数据包(收到响应后)
  • 然后发送同步序列号ack=y+1和数据包的序列号seq=x+1和ACK=1确认包作为应答
  • (第三次握手:ACK=1,seq=x+1,ack=y+1),客户端和服务端变化为established状态

三次握手主要是为了验证服务端和客户端那边的发送/收信能力是没有问题的,证明连接是通的,可以正式发送信息

DNS服务–负责域名解析

在这里插入图片描述

  • DNS服务位于应用层
  • 提供域名到IP地址之间的解析服务
  • DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务

各种协议与HTTP协议的关系

在这里插入图片描述

TCP的 “三次握手” 和“四次挥手”:https://mp.weixin.qq.com/s/OYNDJ9tzfZCIdPMyts2jtw

一份tcp、http面试指南:https://mp.weixin.qq.com/s/FhiLEPndhQJUiYrMuXaveQ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值