1.TCP的服务

在一个TCP连接中。仅有双方进行彼此通信。

TCP通过下列方式来提供可靠性:

1)应用数据被切割成TCP觉得最适合发送的数据块。

这和UDP全然不同,应用程序产生的数据报长度保持不变。由TCP传递给IP的信息单位称为报文段或段。

2)当TCP发出一个段后。它启动一个定时器,等待目的端确认收到这个报文段。假设不能及时收到一个确认。将重发这个报文段。这将在21章中重传策略中讨论。

3)当TCP收到发自TCP连接还有一端的数据,它将发送一个确认。

这个确认不是马上发送。通过将推迟几分之中的一个秒,这将在19章中讨论。

4)TCP将保持它首部和数据的检验和。这是一个端到端的检验和。目的是检測数据文件在传输过程中的不论什么变化。假设收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)

5)既然TCP报文段作为IP数据报来传输。而IP数据报的到达可能会失序。因此TCP报文段的到达也可能会失序。假设必要,TCP将对收到的数据进行又一次排序。将收到的数据以正确的顺序交给应用层。

6)既然IP数据报会发生重发,TCP的接收者必须丢弃反复的数据。

7)TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。

TCP的接收端仅仅同意还有一端发送接收端缓冲区所能接纳的数据。

这将防止较快主机致使较慢主机的缓冲区溢出。

TCP提供面向连接的。可靠的字节流服务。

2.TCP的首部

TCP数据被封装在一个IP数据报中:(IP首部<20bit>、TCP首部<20bit>、TCP数据),例如以下图:


port号:标识了接收与发送进程
序号:表示一个数据报中的第一个数据字节
确认序号:表示发送端希望下次收到的序号,因此,确认序号应当是上次已成功收到数据字节序号加1。
首部长度:表示首部中32Bit的数目。须要这个值是由于任选字段的长度是可变的。

这个字段占4bit(最多能表示15个32bit,即4*15=60个字节的首部长度)。因此TCP最多有60字节首部。然则,没有任选字段。正常的长度是20字节。

TCP首部中有6个标志比特
URG   紧急指针有效
ACK   确认序号有效
PSH   接收方尽快把报文交付应用层
RST   复位连接
SYN   发起一个连接
FIN   发端完毕发送任务
窗体大小:通过每一端声明窗体大小。来提供流量控制的能力。

窗体大小为字节数,起始于确认序号字段指明的值。这个值是接收端期望接收的字节。窗体大小是一个16 bit字段。因而窗体大小最大为65535字节。

校验和:覆盖整个TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储。并同收端进行验证。

紧急指针:为一个正的偏移量。和序号相加表示紧急数据最后一个字节的序号,仅当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向还有一端发送紧急数据的一种方式。

最大报文长度(MSS):最常见的可选字段。每一个连接方通过都在通信的第一个报文段(为建立连接而设置SYN标志的那个段)中指明这个选项。它指明本端所能接收的最大长度的报文段。

作者原创,转载请标明原处:http://blog.csdn.net/xifeijian/article/details/44264079

版权声明:本文博主原创文章,博客,未经同意不得转载。

《TCP/IP详细说明》读书笔记(17章)-TCP传输控制协定的更多相关文章

  1. TCP/IP网络编程 读书笔记1

    本篇主干内容是TCP/IP网络编程1-9章学习笔记 1. linux文件描述符 描述符从3开始以由小到大的顺序编号,0,1,2,分配给标准I/O用作标准输入.标准输出和标准错误. 2. 协议族与套接字 ...

  2. TCP/IP知识总结(TCP/IP协议族读书笔记二)

    接下来,总结一下网络层的协议,IP,ARP,RARP,ICMP,IGMP.当我们在网络传输的过程中,把分组交付到主机或路由器需要两级地址:物理地址和逻辑地址.而且我们需要能够把物理地址映射成为相应的逻 ...

  3. 《TCP/IP图解》读书笔记

    看这本书的目的: 了解计算机之间是怎么通信的 熟悉TCP/IP协议 后面就这两个目的进行展开,要达到这两个目的,读这本书,学到了哪些知识. 一.计算机之间是怎么通信的 先来了解下面几个概念,中继器,二 ...

  4. TCP/IP知识总结(TCP/IP协议族读书笔记一)

    一.简述TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/互联网互联协议,又名网络通信协议.是Internet最基 ...

  5. TCP/IP详解 读书笔记(一):概述

    分层 网络协议通常分不同层次进行开发,每一层负责不同的职责,一个协议簇指的是一组不同层次上的多个协议的组合. TCP/IP通常被认为是一个四层协议系统: 链路层:主要是处理与电缆或其他传输媒介的物理接 ...

  6. TCP/IP知识总结(TCP/IP协议族读书笔记四)

    参考:http://blog.chinaunix.net/uid-26275986-id-4109679.html 继续!TCP的流量控制和拥塞控制. TCP相对UDP可靠的地方在于它的拥塞控制.流量 ...

  7. TCP/IP知识总结(TCP/IP协议族读书笔记三)

    接下来,总结传输层的两大协议UDP和TCP. 一.UDP(用户数据报协议) 讲UDP之间,先了解两个概念:有连接和无连接. 有连接:通信之前,通信双方必须建立一条通道: 无连接:不需要建立通道,发送方 ...

  8. TCP/IP详解 读书笔记:TCP:传输控制协议

    TCP的服务 TCP为应用层提供一种面向连接的.可靠的字节流服务. 一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP. TCP通过以下方式提供可靠性: 应用数据被切割为TCP认为最 ...

  9. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  10. 《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

随机推荐

  1. HBase shell 操作命令记录

    创建表:create 'tablename','column cluseter:column1,column2...columnn','column cluster:column1,column2.. ...

  2. SnappyDB—Android上的NoSQL数据库简介

    参考:http://www.open-open.com/lib/view/open1420816891937.html 参考:http://android-arsenal.com/details/1/ ...

  3. python读取word表格内容(1)

    1.首页介绍下word表格内容,实例如下: 每两个表格后面是一个合并的单元格

  4. pyqt中使用matplotlib绘制动态曲线 – pythonic

    一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...

  5. android 背景透明度渐变动画

    button.setVisibility(View.VISIBLE); // 背景透明度渐变动画 ObjectAnimator alpha = ObjectAnimator.ofFloat(butto ...

  6. CURD 例子

    public function modify(){ $id=$_GET['id']; $m=M('user'); $arr=$m->find($id); //var_dump($arr); $t ...

  7. epoll使用详解(精髓)

    epoll使用详解(精髓) epoll - I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中 ...

  8. 查GDI对象泄露的利器:GDIView

    查GDI对象泄露的利器:GDIView可以很详细的查到进程的GDI对象的总个数,详细的GDI对象的个数,以及其增减数量.其GDI对象类型也可以很详细的得知,以及其内存地址,句柄.实在是好使! 下载地址 ...

  9. c/c++处理参数

    直接上代码:涉及函数getopt(),getopt_long() #include <unistd.h> #include <stdlib.h> #include <st ...

  10. Poj 3517 And Then There Was One(约瑟夫环变形)

    简单说一下约瑟夫环:约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个 ...