传输控制协议(Transmission Control Protocol)

概念

  一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。

主要特点

  (1)TCP是面向连接的运输层协议。这就是说,应用程序在使用TCP协议之前,必须先建立TCP协议。在传送数据完毕后,必须释放已经建立的TCP连接。类似于“打电话”,需要先拨号建立连接,通话完之后要挂机释放连接。

  (2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。

  (3)TCP铍铜可靠交付的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按顺序到达。

  (4)TCP提供全双工通信。TCP允许通信双发的应用进程在任何时候都发送数据。

  (5)面向字节流。TCP中“流”(stream),指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互式一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。

TCP的连接

  TCP把连接作为最基本的抽象。

  TCP连接的端点叫做套接字(socket)或插口。根据RFC 793的定义:端口号拼接到(concatenated with)IP地址机构称套接字。

  因此就有  套接字 socket = {IP地址 : 端口}

  因此每一条TCP连接唯一地被通信两端的两个套接字(端点)所确定。

停止等待协议(stop-and-wait)

  停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

    

  1.无差错情况

  如上图a所示:A发出分组M1完就暂停发送,等待B的确认。B收到了M1就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组M2。以此下去。

  2.出现差错

  如上图b所示:B在接受到M1时检测到了差错,就丢弃M1,并什么也不做。A只要超过了一段时间仍然没收到确认,就认为刚才的分组丢失了,就重传之前的分组,这就叫超时重传

   

  3.确认丢失和确认迟到

  如上图a所示:B所发送的对M1的确认丢失了,A在超时重传的时间内没有收到确认,但无法知道是自己发送的分组出错,丢失,或者是B发送的确认丢失了,因此A会重传这个M1,当B收到的重传M1时,会有一下两个动作:(1)不向上层交付,丢掉这个重复的分组。(2)向A发送确认。

  如上图B所示,B确认的分组M1迟到了,在超时重传的时间内未返回A,因此A会重传M1,之后当A收到了迟到的确认分组,就会丢弃重复的M1,不向上层交付。

  4.总结

  向上述的这种可靠传输协议常称为自动重传请求ARP,优点是简单,但是缺点也很明显,就是信道利用率过低。

计算机网络(7)-----TCP协议概述的更多相关文章

  1. [编程] TCP协议概述

    TCP 协议概述 1.TCP提供一种面向连接的.可靠的字节流服务. 2.两个应用程序通过TCP连接交换8bit字节构成的字节流. 3.每个TCP首部都包含源端和目的端的端口号,用于寻找发端和收端应用进 ...

  2. 计算机网络 之 TCP协议报文结构

    前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱.于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格.本文受roc的< ...

  3. 计算机网络:TCP协议建立连接的过程为什么是三次握手而不是两次?【对于网上的两种说法我的思考】

    网上关于这个问题吵得很凶,但是仔细看过之后我更偏向认为两种说的是一样的. 首先我们来看看 TCP 协议的三次握手过程 如上图所示: 解释一下里面的英文: 里面起到作用的一些标志位就是TCP报文首部里的 ...

  4. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  5. 计算机网络之TCP协议与UDP协议

    运输层向它上面应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层. 两个主机进行通信实际上就是两个主机中的应用进程互相通信.应用进程之间的通信又称为端到端的通信. 应用层不同进 ...

  6. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  7. tcp/ip详解 卷1 -- 协议概述

    第一章 概述 分层 TCP/IP 通常被认为是一个四层协议系统. 每一层负责不同的功能. 链路层, 也成为数据链路层或者网络接口层. 通常包括 操作系统中的设备驱动程序和计算机中对应的网络接口卡. 主 ...

  8. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  9. 计算机网络--TCP协议深入理解

    在近期学习计算机网络的过程中,由于知识点过于零散,琐碎,从而学习起来痛苦不堪,此贴只是总结了基于传输层的TCP协议相关的知识细节,并加入一点自己的理解,并无创新,若有理解不当之处,敬请提出,感谢! 首 ...

随机推荐

  1. Device Tree(三):代码分析【转】

    转自:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html Device Tree(三):代码分析 作者:linuxer 发布于:201 ...

  2. create thread的时候发生core dump

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h& ...

  3. 论Postgres的“已提交的而且 xmin’比当前事务的XID小的记录对当前事务才是可见的”

    最近在网上看到这样一句话Postgres“已提交的而且 xmin 比当前事务的XID小的记录对当前事务才是可见的”.先不评断这句话的正确性:看下这句话的结构,因果关系: 按照此话的意思:要postgr ...

  4. Prince2的七大原则(7)

    [Prince2科普]Prince2的七大原则(7) 2016-12-12 光环组织级项目管理 按照惯例我们先来回顾一下,PRINCE2七大原则分别是指:持续的业务验证,经验学习,角色与责任,按阶段管 ...

  5. extjs 一些杂碎的技术问题

    1怎样将grid 的checkedbox 勾选状态都清除 inv.getSelectionModel().clearSelections(); inv.getView().refresh(); 2怎样 ...

  6. CSS3的chapter6

    CSS布局          div标签: 在css布局方式中,div 是这种布局方式的核心对象,我们的页面排版不再依赖于表格, 仅从div的使用上说,做一个简单的布局只需要两样东西:div 与 cs ...

  7. unity4.6学习Ugui中文文档-------参考-UGUI Rect Transform

    1 . Rect Transform Rect Transform 是 2D 与 3D 图形的 Transform 组件对应.它用来指定用户界面系统中的大小. 位置和旋转的控件 Properties ...

  8. python文件和目录操作方法大全(含实例)

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...

  9. sizeof既是关键字,又是运算符(操作符),但不是函数!

    sizeof是关键字吗 sizeof是关键字,这一点毋庸置疑.你不能将sizeof定义为任何标识符.查看C语言标准文档里的说明: sizeof是运算符(操作符)吗 C语言中,sizeof是运算符(操作 ...

  10. iOS开发 弹簧效果

    #import "DDJelloView.h" #define SYS_DEVICE_WIDTH    ([[UIScreen mainScreen] bounds].size.w ...