转载请附本文的链接地址: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.client发送一个SYN段(SYNchronous,TCP首部中同步序号标志)指明将要链接的server接口,段中包括初始序号ISN(Initial Sequence Number 初始序号)。

2.服务端发回SYN段作为应答。当中包括服务端的初始序号以及将确认序号。确认序号设置为客户的ISN值加1,以对客户的SYN报文段进行确认。

3.client必须将确认序号设置为server的ISN值加1并发送给服务端,以对服务端的SYN报文段进行确认。

四次挥手过程:

为什么要有4次挥手呢,由于TCP连接是全双工的,即数据在两个方向上能同一时候传递,所以关闭的时候须要先将一边关闭,再将还有一边关闭。

1.当一段完毕数据发送任务之后,能够发送一个FIN(也就是finish,TCP首部中的结束标志)。来终止这个方向连接。

2.当还有一端收到FIN之后,它必须通知应用层还有一端已经终止了那个方向的数据传送。

而且它须要发回一个ACK(ACKnowledgment TCP首部中的确认标志)进行确认。确认序号为收到的序号加1,和SYN一样,FIN也相同会包括一个序号。同一时候TCP的这一端还向应用层传送一个文件结束符。

3.接着这一端。也就是刚開始接收到FIN码的这一端会发送一个FIN来请求关闭还有一边的通路。

4.client收到之后必须发挥一个确认,并将确认序号设置为收到序号加1。

好了。以上就是关于TCP的特点以及三次握手与四次挥手的过程。希望大家能够读懂吸收成为自己的知识,有不明确的欢迎留言讨论。

具体解释TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)的更多相关文章

  1. TCP协议—三次握手四次挥手的原理<转>

    三次握手四次挥手的原理   TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的.三 ...

  2. TCP/IP协议 | TCP协议 | UDP协议 | 三次握手四次挥手

    TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP ...

  3. python摸爬滚打之----tcp协议的三次握手四次挥手

    TCP协议的三次握手, 四次挥手 三次握手过程 1, 服务器时刻准备接受客户端进程的连接请求, 此时服务器就进入了LISTEN(监听)状态; 2, 客户端进程然后向服务器发出连接请求报文, 之后客户端 ...

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

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

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

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

  6. [转]Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解

    一.Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手. 注:以下说明最好能结合”图:T ...

  7. [na]TCP的三次握手四次挥手/SYN泛洪

    1.TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占32位, ...

  8. TCP/IP三次握手四次挥手

    本文通过图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图所示,给出了TCP通信过程的示意图. TCP 三次握手四次挥手 主要包括三部 ...

  9. tcp三次握手四次挥手那些事

    建立TCP需要三次握手才能建立,而断开连接则需要四次挥手.三次握手,四次挥手流程图如下: 一.首先看下如何通过三次挥手----------建立连接 首先客户端发送连接请求报文,服务端接受连接后回复AC ...

随机推荐

  1. win10下怎么配置以KDiff3作为merge tool和diff tool

    系统环境: OS: Windows 10 Git 2.6.1.windows.1 KDiff3 0.9.98 (64 bit) 具体代码如下: git config --global --add me ...

  2. [SaltStack] salt-master启动流程

    SaltStack源码阅读 做salt有一段时间了, 一直没从源码层面去理解, 好吧, 开始读读源码 -_- 那就从salt-master的启动开始吧. 启动salt-master方法: /etc/i ...

  3. 学习环境配置:Manjaro、MSYS2以及常见软件

    0.前言 在说Manjaro之前,要先说一下Linux发行版.对于各大发行版而言,内核只有版本的差异,最重要的区别就是包管理系统.常见的包管理系统包括:Pacman,Apt , Yum和Portage ...

  4. 计蒜客 ACM竞赛高校联盟训练赛 第8场 煎牛排

    水一水. https://nanti.jisuanke.com/t/24205 煎牛排 题目描述 又是一个难得的周六,是时候远离食堂和外卖出去大吃一顿了.圈内知名吃货AA正想着中午去吃汉堡炸鸡烤肉火锅 ...

  5. CCCC L1-039. 古风排版【图形输出/循环控制行列/模拟/细节】

    L1-039. 古风排版 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 中国的古人写文字,是从右向左竖向排版的.本题就请你编写 ...

  6. 深入V8引擎-Time核心方法之win篇(1)

    上一篇的源码看得十分无趣,官方文档跟黑心棉一样渣. 这一篇讲讲windows操作系统上的时间戳实现,由于类的声明,方法解释上一篇都贴过了,所以这次直接上对应版本的代码. windows与mac很不一样 ...

  7. 转:IAdaptable & IAdapterFactory

    IAdaptable & IAdapterFactory在Eclipse中使用IAdaptable接口的方式有两种 在Eclipse中使用IAdaptable接口的方式有两种1:某个类希望提供 ...

  8. perl learning

    Perl 中文教程 http://cn.perlmaven.com/perl-tutorial learning perl in about 2 hours 30 minutes http://qnt ...

  9. Beginning Auto Layout Tutorial in iOS 7: Part 6

    Gallery example 屏幕有四个分开的相同的矩形,每个矩形有一个label和一个image view.创建一个Gallery的项目.在Main.storyboard中,拖拉一个view大小为 ...

  10. 在Android中实现阴影效果

    在Android L推出后,Google提出了全新的设计语言:材质设计.其中很重要的一点就是阴影效果的使用,你可以为每一个View设置一个elevation值,相当于除了x.y之外的z值,z值决定了阴 ...