详解TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)
2016-03-02 17:22
1386 查看
转载请附本文的链接地址:http://blog.csdn.net/sahadev_/article/details/50780825 ,谢谢。
tcp/ip技术常常会在我们面试的时候出现,很多公司也要求需要掌握tcp/ip,socket等,所以掌握这项技术会为我们面试的时候加分。
好,今天我就简单的介绍一下tcp技术:
首先说一下tcp位于运输层,现在网络被分为了5层,由上往下说:
应用层,运输层,网络层,链路层,物理层。
应用层:就是我们使用的http技术或者ftp协议包装了我们要传输的数据。
运输层:它会将应用层的数据包装发送给网络层,它为应用层提供了各种各样的传输方式。例如tcp提供了可靠的传输的传输技术,就是由运输层来实现的。
网络层:对运输层的数据进一步的包装,并将上层数据包发往目的端。例如我们通常所熟悉的ip协议就位于这一层。
链路层:这一层为IP发送和接收数据报,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,他们一起处理与电缆的物理接口细节。
物理层:就是我们的电话线,光缆,wifi之类的。
简单介绍了下网络协议的分层,回来说说tcp协议的特点:
·应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位成为报文段或段。
·当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
·当TCP收到法子TCP链接另一端的数据,它将发送一个确认,这个确认不是立即发送,通常将推迟几分之一秒。
·TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传送过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发送端超时重发)。
·既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排列,将收到的数据以正确的顺序交给应用层。
·既然IP数据报会重复发送,TCP的接收端必须丢弃重复的数据(因为会超时重发)
·TCP还能提供流量控制。TCP链接的每一方都有固定大小的缓冲控件。TCP的接收端允许另一端发送接受端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
通过以上特点,TCP会保证发送端应用层的数据正确,准确,按次序到达目的端应用层。
说完了TCP协议的特点,我们接下来描述一下三次握手与四次挥手,网上的很多文章对这块讲的不详细,不是按照专业词语来描述的,使我们缺乏对原理的理解。
三次握手过程:
1.客户端发送一个SYN段(SYNchronous,TCP首部中同步序号标志)指明将要链接的服务器接口,段中包含初始序号ISN(Initial Sequence Number 初始序号)。
2.服务端发回SYN段作为应答,其中包含服务端的初始序号以及将确认序号,确认序号设置为客户的ISN值加1,以对客户的SYN报文段进行确认。
3.客户端必须将确认序号设置为服务器的ISN值加1并发送给服务端,以对服务端的SYN报文段进行确认。
四次挥手过程:
为什么要有4次挥手呢,因为TCP连接是全双工的,即数据在两个方向上能同时传递,所以关闭的时候需要先将一边关闭,再将另一边关闭。
1.当一段完成数据发送任务之后,可以发送一个FIN(也就是finish,TCP首部中的结束标志),来终止这个方向连接。
2.当另一端收到FIN之后,它必须通知应用层另一端已经终止了那个方向的数据传送。并且它需要发回一个ACK(ACKnowledgment TCP首部中的确认标志)进行确认,确认序号为收到的序号加1,和SYN一样,FIN也同样会包含一个序号。同时TCP的这一端还向应用层传送一个文件结束符。
3.接着这一端,也就是刚开始接收到FIN码的这一端会发送一个FIN来请求关闭另一边的通路。
4.客户端收到之后必须发挥一个确认,并将确认序号设置为收到序号加1。
好了,以上就是关于TCP的特点以及三次握手与四次挥手的过程,希望大家可以读懂吸收成为自己的知识,有不明白的欢迎留言讨论。
tcp/ip技术常常会在我们面试的时候出现,很多公司也要求需要掌握tcp/ip,socket等,所以掌握这项技术会为我们面试的时候加分。
好,今天我就简单的介绍一下tcp技术:
首先说一下tcp位于运输层,现在网络被分为了5层,由上往下说:
应用层,运输层,网络层,链路层,物理层。
应用层:就是我们使用的http技术或者ftp协议包装了我们要传输的数据。
运输层:它会将应用层的数据包装发送给网络层,它为应用层提供了各种各样的传输方式。例如tcp提供了可靠的传输的传输技术,就是由运输层来实现的。
网络层:对运输层的数据进一步的包装,并将上层数据包发往目的端。例如我们通常所熟悉的ip协议就位于这一层。
链路层:这一层为IP发送和接收数据报,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,他们一起处理与电缆的物理接口细节。
物理层:就是我们的电话线,光缆,wifi之类的。
简单介绍了下网络协议的分层,回来说说tcp协议的特点:
·应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位成为报文段或段。
·当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
·当TCP收到法子TCP链接另一端的数据,它将发送一个确认,这个确认不是立即发送,通常将推迟几分之一秒。
·TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传送过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发送端超时重发)。
·既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排列,将收到的数据以正确的顺序交给应用层。
·既然IP数据报会重复发送,TCP的接收端必须丢弃重复的数据(因为会超时重发)
·TCP还能提供流量控制。TCP链接的每一方都有固定大小的缓冲控件。TCP的接收端允许另一端发送接受端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
通过以上特点,TCP会保证发送端应用层的数据正确,准确,按次序到达目的端应用层。
说完了TCP协议的特点,我们接下来描述一下三次握手与四次挥手,网上的很多文章对这块讲的不详细,不是按照专业词语来描述的,使我们缺乏对原理的理解。
三次握手过程:
1.客户端发送一个SYN段(SYNchronous,TCP首部中同步序号标志)指明将要链接的服务器接口,段中包含初始序号ISN(Initial Sequence Number 初始序号)。
2.服务端发回SYN段作为应答,其中包含服务端的初始序号以及将确认序号,确认序号设置为客户的ISN值加1,以对客户的SYN报文段进行确认。
3.客户端必须将确认序号设置为服务器的ISN值加1并发送给服务端,以对服务端的SYN报文段进行确认。
四次挥手过程:
为什么要有4次挥手呢,因为TCP连接是全双工的,即数据在两个方向上能同时传递,所以关闭的时候需要先将一边关闭,再将另一边关闭。
1.当一段完成数据发送任务之后,可以发送一个FIN(也就是finish,TCP首部中的结束标志),来终止这个方向连接。
2.当另一端收到FIN之后,它必须通知应用层另一端已经终止了那个方向的数据传送。并且它需要发回一个ACK(ACKnowledgment TCP首部中的确认标志)进行确认,确认序号为收到的序号加1,和SYN一样,FIN也同样会包含一个序号。同时TCP的这一端还向应用层传送一个文件结束符。
3.接着这一端,也就是刚开始接收到FIN码的这一端会发送一个FIN来请求关闭另一边的通路。
4.客户端收到之后必须发挥一个确认,并将确认序号设置为收到序号加1。
好了,以上就是关于TCP的特点以及三次握手与四次挥手的过程,希望大家可以读懂吸收成为自己的知识,有不明白的欢迎留言讨论。
相关文章推荐
- 【error】No 'Access-Control-Allow-Origin' 跨域问题
- IOS--网络请求基础
- 堆是什么 http://www.cnblogs.com/vamei/archive/2013/03/20/2966612.html
- 网络爬虫的实现思路
- 基于Nginx服务器和iOS9的HTTPS安全通信
- 基于Nginx服务器和iOS9的HTTPS安全通信
- neutron是如何通过iptables管理网络的
- JAVA TCP/UDP网络编程
- 解决http转https在chrome里blocked的问题
- TCP的三次握手与四次挥手过程介绍
- Nginx https加密以及nginx日志配置与管理
- 使用相对Url无缝切换 HTTP HTTPS
- iOS网络开发(8)文件下载的实现
- 常见的HTTP请求头与响应头
- Java https服务器证书认证问题解决方案
- urllib2.URLError: <urlopen error unknown url type: https>
- 关于TCP_NODELAY和TCP_CORK选项
- Linux tcpdump命令详解
- BP神经网络推导过程详解
- 机器学习算法汇总:人工神经网络、深度学习及其它