TCP-三次握手和四次挥手简单概述
#______________________________________________TCP三次握手和四次握手_____________________________________________________
三次握手(three-way handshaking)
1.背景:TCP位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。
2.原理:
1)发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。
2)接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。
3)最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。
通俗的说法
1)Client:嘿,李四,是我,听到了吗?
2)Server:我听到了,你能听到我的吗?
3)Client:好的,我们互相都能听到对方的话,我们的通信可以开始了。
为什么要三次握手:
四次挥手(Four-Way-Wavehand)
1.意义:当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。
2.原理:
1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
通俗的说法
1)Client:我所有东西都说完了
2)Server:我已经全部听到了,但是等等我,我还没说完
3)Server:好了,我已经说完了
4)Client:好的,那我们的通信结束
TCP/IP 通信的的三次握手图解
备注:三次握手用于建立通信链接,四次握手用于释放链接
#——————————————————————————TCP模型、传输过程———————————————————————————————————
1.TCP/IP四层概念模型
TCP/IP四层概念模型是目前较为常用的一种网络模型,相较于OSI七层网络模型,只是对比OSI将七层减少为四层。
2.网络传输过程
3.TCP协议与UDP协议对比
根据是否连接
、传输可靠性
、应用场景
、速度
这几个特点,TCP协议和UDP协议有以下几点不同。
常见的应用层协议中,基于TCP协议
的有:HTTP、HTTPS、FTP
。基于UDP协议
的有:DNS(域名解析协议)SNMP:简单网络管理协议
等。
4.TCP和http的关系
HTTP:超文本传输协议,是应用层的协议,以TCP为基础
TCP:传输控制协议,是传输层的协议,以IP协议为基础
简单来说:
TCP是底层通讯协议,定义的是数据传输和连接方式的规范
HTTP是应用层协议,定义的是传输数据的内容的规范
HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP
5、TCP与UDP的不同
1. 是否需要建立连接。
UDP在传送数据之前不需要先建立连接;TCP则提供面向连接的服务;
2. 是否需要给出确认
对方的传输层在收到UDP报文后,不需要给出任何确认,而 TCP需要给出确认报文,要提供可靠的、面向连接的传输服务。
3.虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式;【UDP取代TCP】
6、TCP与UDP的适用场景。
TCP的适用场景: 要求通信数据的完整性和准确性较高,eg: 文件传输(视频、图片、文件)、邮件发送与接收、重要状态的更新等。
UDP的适用场景: 要求通信的响应度高,对数据信息的安全性和完整性要求相对较低,常用于实时通信,例如: 网络电话、网络视频、实时通信等。
举一个通过 IP 电话进行通话的例子。如果使用 TCP,数据在传送途中如果丢失就会被重发,这样就会导致无法流畅地传输通话人的声音。而采用UDP,它不会进行重发处理,从而也就不会有声音大幅度延迟到达的问题,即使有部分数据丢失,也只是会影响某一小部分的通话。
补充1:
应用层:
为应用程序提供网络接口,支持文件传授、通信等功能的网络应用。直接和用户打交道,通过相关协议生成标准的数据协议。常见协议主要有:HTTP、HTTPS、FTP( 文件传输 )等
ftp是文件传输协议,http是超文本传输协议,本质上是不一样的两个传输协议,一个针对文件,一个针对超文本。
传输层:
传输层提供应用程序间的通信,格式化信息流,为网络提供错误控制和数据流量控制。
常见协议:TCP、UDP等
网络互连层:
这是整个 TCP / IP 协议栈中的核心,将数据从原网络发往目标网络。
常见协议:IP 协议等
综上:
TCP 、UDP、HTTP 是网络协议中一种。TCP 和 UDP 属于传输层协议。HTTP 属于应用层协议。
举例:
1.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
2.你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
3.HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
补充2:
1.websocket和http的区别:
WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息,而HTTP是单向的; 2、WebSocket是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的连接,3、WebSocket是长链接,与服务器连接后会保持连接持续通信(就是不中断)
2.WebSocket 是什么:
WebSocket是HTML5规范提出的一种协议;目前除了完犊子的IE浏览器,其他浏览器都基本支持。他是一种协议,万变不离其宗,也是基于TCP协议的;和HTTP协议是并存的两种协议。
3.WebSocket 适用场景:
WebSocket一般适用于 即时通信、弹幕、视频会议/聊天、消息推送、实况更新。
4.WebSocket与HTTP的关系:
相同点:都是一样基于TCP的,都是可靠性传输协议。都是应用层协议。
不同点:1.WS建立连接后,通讯双方都可以在任何时刻向另一方发送数据; 2.WS不能通过中间人转发,它必须是一个直接连接; 3.http短连接,websocket长连接
联系:WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。
5.http和https的区别:
- http是超文本传输协议,信息是明文传输;https则是具有安全性的ssl加密传输协议。
- http和https是完全不同的连接方式,用的端口也不一样,http是80,https是443。
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http的速度要比https快一些;
- http的连接很简单,是无状态的; HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全;
6.options请求:
options请求的官方定义:OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。
用白话说就是:在发生正式的请求之前,先进行一次预检请求。看服务端返回一些信息,浏览器拿到之后,看后台是否允许进行访问。
相关连接:
https://mp.weixin.qq.com/s/OS_MUrcnODgHKmReUj_QhA ..........软件测试之TCP、HTTP协议必知必会
https://blog.csdn.net/boyaaboy/article/details/102566522 ............TCP或UDP的应用层协议有哪些 ,,网关和服务说明
http://coolaf.com/tool/chattest .........................................在线websocke
https://www.php.cn/faq/465597.html ...............................websocke与http区别
https://www.liaoxuefeng.com/wiki/1022910821149312/1103303693824096 ..................websocke解释
https://blog.csdn.net/miao_9/article/details/85286025 ......................websocket解释及http区别
https://www.cnblogs.com/zhuleixiao/p/9218121.html ..........................socket和http的区别解释
https://mp.weixin.qq.com/s/mvH1GdesrBz9OHNi5XvlWA ...................页面很卡的原因分析及解决方案
https://www.cnblogs.com/gtscool/p/14886844.html .........................请求两次,正式请求前先请求options