转载请附本文的链接地址: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协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)相关推荐

  1. TCP三次握手四次挥手详解

    TCP三次握手四次挥手 1. TCP报文格式 2. TCP连接需要解决的问题 3. 三次握手 4. 四次挥手 5. 一些补充问题 1. TCP报文格式 在了解三次握手和四次挥手之前,先知道TCP报文内 ...

  2. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

  3. TCP/IP协议 - 三次握手四次挥手(入门易懂版)

    握手通俗理解为两个人见面Say Hai,客户端和服务端建立连接 挥手就可以理解为两个人结束会面,要Say Goodbai,客户端和服务端断开连接 要了解什么是三握四挥,必须要了解一个重要的知识点:什么 ...

  4. 什么是TCP协议的三次握手四次挥手

    IP协议.HTTP协议.TCP协议.TCP/IP 协议我们经常遇到,而且初学的时候容易弄混.那么他们之间有什么关系呢?重点内容 ####1.什么是TCP/IP 协议 TCP/IP不是一个协议,而是一个 ...

  5. Linux网络编程(网络七层协议,TCP/IP,三次握手四次挥手,TCP/UDP的区别)

    1.OSI 7层网络模型 1.网络七层协议 (1)OSI定义了网络互连的七层框架(物理层.数据链路层.网络层.传输层.会话层.表示层.应用层),即ISO开放互连系统参考模型. (2)各层功能定义 这里 ...

  6. python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: 这里的客户端一般 ...

  7. 计算机网络之UDP与TCP协议(三次握手, 四次挥手)

    ⭐️前面的话⭐️ 本文介绍计算机网络中有关传输层协议的知识--UDP与TCP协议,在TCP协议中,为了保证数据的可靠传输,引入了十大保证可靠性的机制,即确认应答,超时重传,连接管理(三次握手,四次挥手 ...

  8. java实现四次挥手_java中三次握手四次挥手是什么?图文详解

    关于java中的一些基础的知识,是非常的多的,而且涉及的方面也是非常的广阔的.相信大家在日常的学习中也会遇到很多这些令人疑惑的问题,今天就来为大家介绍一下,一起来看看吧. 首先说一下,java中三次握 ...

  9. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

最新文章

  1. java编写交通灯思路
  2. Symantec Backup Exec Remote Agent 2010在Redhat Enterprise 6.6上启动问题
  3. 【REST SOAP】REST和SOAP Web Service的区别比较
  4. Python 学习笔记(1)
  5. 可穿戴的手机!努比亚nubia-α国行版将于4月8日正式发布
  6. python对日期型数据排序_如何对日期执行数学运算并用Python对它们进行排序?
  7. centos7.5 supervisor +nginx 开机启动设置(实测最有效)以及出现问题思路
  8. 检测php源码函数版本,PHP通用检测函数集合
  9. Golang并发模式--管线
  10. Shine.js实现动态阴影效果
  11. STP是一个需要众力协作的协议
  12. 最好听的男孩英文名字大全
  13. 电视大屏怎么看英语启蒙动画片?跟着这3个应用学,省不少早教钱
  14. 搜狗微信公众号文章反爬虫完美攻克
  15. 【Mathematica】 曲面的绘制
  16. java强行删除文件(针对进程正在使用的文件的删除)
  17. Unity3D “xx AnimationEvent has no function name specified!”解决方案
  18. 酒水知识(六大基酒之白兰地_Brandy)
  19. 网盘上传工具Boxifier怎么用?
  20. 【man】getsockopt 和 setsockopt

热门文章

  1. c++整理--函数重载
  2. Linux Shell 重定向到文件以当前时间命名
  3. IIC驱动5150遇到麻烦
  4. 定位到元素后获取其属性_Selenium界面自动化测试(4)(Python):元素定位及操作...
  5. VS_VERSION_INFO信息的读取
  6. python安装虚拟环境出现错误_virtualenv 安装虚拟环境问题 请大神指点一二
  7. 100条常用写作谚语(5)(6)(7)(8)
  8. java 异步调用方法_乐字节Java编程之方法、调用、重载、递归
  9. 【Pytorch神经网络实战案例】15 WGAN-gp模型生成Fashon-MNST模拟数据
  10. 微型计算机中存储器分成哪几个等级?它们各有什么特点?用途如何?,《微机原理》复习思考题第十二章存储器.DOC...