1 TCP的服务

尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务。两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中,仅有两方进行通信。TCP通过以下方式来提供可靠性:

(1)应用数据被分割成TCP认为最合适发送的数据块。

(2)当TCP发送一个段后它启动一个定时器,等待目的端确认收到这个报文段(超时重传)。

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

(4)TCP将保持它首部和数据的检验和(端到端)。

(5)TCP报文段通过IP数据传输,可能出现失序,因此TCP会对收到的数据进行重新排序,将收到的正确顺序交给应用层。

(6)TCP将丢弃重复的数据

(7)TCP还能提供流量控制。TCP的接收端只允许另一发送接收端缓冲区所能接纳的数据,防止缓存区溢出。

另外TCP不提供对字节流的解释,对字节流的解释由TCP连接双方的应用层解释。

2 TCP首部

TCP数据被封装在一个IP数据报中:

TCP首部格式。如果不计算任选字段,通常是20个字节。

源端和目的端端口号:用于寻找发送端和接收端的应用进程。这2个值加上IP首部中的源端和目的端的IP地址构成唯一的确定的一个TCP连接。

序号:用来标示从TCP发送端到接收端发送的数据字节流,表示在这个报文段中的第一个数据字节(无符号数,到达2^32-1后又从0开始)当建立一个TCP新的连接时,SYN标志变1。序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节序号为这个ISN加1,因为SYN标志需要消耗一个序号。每个传输的字节都被计数,确认序号包含发送端确认的一端所期望手下的下一个序号。因此确认序号应该上次成功收到的数据字节序号加1。只有ACK标志为1的确认序号字段才有效。

首部长度:占四位,表示首部长度为多少个4字节,因此首部最大为60字节

六个标志比特:

URG:紧急指针有效

ACK:确认序号有效

PSH:接收方应该尽快将这个报文交给应用层。

RST:重建连接

SYN:同步序号用来发起一个连接。

FIN:发送端完成发送任务

窗口大小:16位,最大65535字节。TCP的流量控制由每一端通过申明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值正是接收端期望接收的字节。

检验和:覆盖整个TCP报文段,发送端计算,接收端验证(需要加上伪首部)。

TCP/IP学习笔记:TCP传输控制协议(一)的更多相关文章

  1. tcp/ip学习笔记-TCP

    tcp/ip学习笔记-TCP 彭会锋 报文发送采用的是tcp_output函数,

  2. TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议

    原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...

  3. TCP/IP学习笔记1--概述,分组交换协议

    1.TCP/IP 互联网是由许多独立发展的网络通信技术融合而成的,能够使它们不断融合并实现统一的正式TCP/IP技术,TCP/IP使通信协议的统称. TCP/IP协议模型(Transmission C ...

  4. TCP/IP学习笔记2--协议分层与OSI参考模型

    协议的分层: 为解决不同计算机之间的通信,ISO(International Organization for Standards)指定了一个国际标准OSI(Open Systems Intercon ...

  5. TCP/IP学习笔记(3)-IP、ARP、RARP协议

    这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...

  6. TCP/IP学习笔记(5)------IP选路

    静态IP选路 一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. D ...

  7. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  8. TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制

    事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...

  9. TCP/IP学习笔记(2)-数据链路层

    数据链路层有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做 ...

随机推荐

  1. Mysql的执行计划各个参数详细说明

    执行计划各个参数的说明 1.id 主要是用来标识sql的执行顺序,如果没有子查询,一般来说id只有一个,执行顺序也是从上到下 2.select_type 每个select子句的类型 a:  simpl ...

  2. Tram

    Tram 题目大意:给你一个图,这个图上有n点和边.点上有开关,开关开始指向一条道路,拨动开关可以使开关指向由开关出发的任意一条路径,读入,a,b,求,至少要拨动几次才能从a点走到b点. 注释:n&l ...

  3. React Native 轻松集成分享功能(Android 篇)

    关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...

  4. Beta No.2

    今天遇到的困难: 组员对github极度的不适应 Android Studio版本不一致项目难以打开运行 移植云端的时候,愚蠢的把所有项目开发环境全部搬上去.本身云的内存小,性能差,我们花费了太多时间 ...

  5. C语言第四次作业-嵌套作业

    一.PTA实验作业 题目1:7-4 换硬币 1. 本题PTA提交列表 2.设计思路 第一:定义三个整型变量f,t,o,分别代表五分,两分,一分的数量 第二:输入待换金额x 第三:令f=x/5;t=x/ ...

  6. 关于Mac OS 使用GIT的引导

    1. 下载Git installer 链接地址:https://ncu.dl.sourceforge.net/project/git-osx-installer/git-2.14.1-intel-un ...

  7. 关于安装wordpress出现500 Internal Server Error的解决方案

    安装新版本wordpress出现500 Internal Server Error的问题: 在./wp-includes/class-http.php的268行,改成 $request_order = ...

  8. Python 远程部署 Fabric

    参考文章:http://zmrenwu.com/post/21/ Fabric是一个Python的库,它提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化.流水化地执行Shell命令.因 ...

  9. hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken

    环境:weblogic10.3.5,hibernate3,GGTS(groovy/grails tools suite):出现这问题是因为该项目是从weblogic8.1.6下移植到weblogic1 ...

  10. Python模块configparser(操作配置文件ini)

    configparser模块提供对ini文件的增删改查方法. ini文件的数据格式: [name1] attribute1=value1 attribute2=value2 [name2] attri ...