tcp协议
2016-05-04 17:52
399 查看
TCP:传输控制协议
1.概述
TCP提供了一种可靠的面向连接的字节流运输层服务。
TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认,对失序的数据重新排序,丢弃重复数据,TCP提供端到端的流量控制,并计算和验证一个强制性的端到端的检验和。
许多流行的应用程序如:Telnet, Rlogin, FTP,SMTP 都使用TCP。
TCP的主要特点:
TCP是面向连接的运输层协议
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
TCP提供可靠交付的服务
TCP提供全双工通信
面向字节流。
面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流
TCP面向流的概念
2.TCP首部
TCP报文段的首部格式如图所示:
各自段的含义:
源端口和目的端口:各占两个字节,端口是运输层与应用层的服务接口,运输层的复用和分解功能都要通过端口才能实现。
序号:占4字节,序号范围是[0,2^32-1]。TCP把在一个TCP连接中传输的数据流中的每一个字节都编上一个序号。
确认号:是期望收到对方的下一个报文段的数据第一个字节的序号
若确认号 == N,则表明到序号N-1为止的所有数据都已正确收到。
首部长度:最大60字节
保留:6bit, 均为0.
紧急URG:当URG=1时,表示报文段中有紧急数据,应尽快传送,而不要按照原来的排队顺序传送,与“紧急指针”字段配合使用。
确认比特ACK:只有当ACK = 1时确认号才有效。
推送比特PSH:当发送端PSH=1时,并立即创建一个报文段发送出去,接收TCP收到PSH为1的报文段后,不在等到整个缓存都填满后在向上交付,而是尽快的交付给应用进程。
复位比特(RST):复位比特也称重建比特或重置比特。当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后在重新建立连接。
同步比特SYN:在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
终止比特FIN:用来释放一个连接。FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放运输连接。
窗口:用来控制对方发送的数据量。单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小。然后通知发放已确定的发送窗口上限。
窗口的值是经常在动态变化
检验和:检验和字段检验的范围包括首部和数据这两部分
紧急指针:紧急指针在URG=1时才有效,它指出本报文段中的紧急数据的字节数。
选项:长度可变,最长可达40字节
3.最大报文长度MSS
MSS默认值为536字节。注:MSS=TCP报文段长度-TCP首部长度
转载自http://www.cnblogs.com/newwy/p/3232503.html
1.概述
TCP提供了一种可靠的面向连接的字节流运输层服务。
TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认,对失序的数据重新排序,丢弃重复数据,TCP提供端到端的流量控制,并计算和验证一个强制性的端到端的检验和。
许多流行的应用程序如:Telnet, Rlogin, FTP,SMTP 都使用TCP。
TCP的主要特点:
TCP是面向连接的运输层协议
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
TCP提供可靠交付的服务
TCP提供全双工通信
面向字节流。
面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流
TCP面向流的概念
2.TCP首部
TCP报文段的首部格式如图所示:
各自段的含义:
源端口和目的端口:各占两个字节,端口是运输层与应用层的服务接口,运输层的复用和分解功能都要通过端口才能实现。
序号:占4字节,序号范围是[0,2^32-1]。TCP把在一个TCP连接中传输的数据流中的每一个字节都编上一个序号。
确认号:是期望收到对方的下一个报文段的数据第一个字节的序号
若确认号 == N,则表明到序号N-1为止的所有数据都已正确收到。
首部长度:最大60字节
保留:6bit, 均为0.
紧急URG:当URG=1时,表示报文段中有紧急数据,应尽快传送,而不要按照原来的排队顺序传送,与“紧急指针”字段配合使用。
确认比特ACK:只有当ACK = 1时确认号才有效。
推送比特PSH:当发送端PSH=1时,并立即创建一个报文段发送出去,接收TCP收到PSH为1的报文段后,不在等到整个缓存都填满后在向上交付,而是尽快的交付给应用进程。
复位比特(RST):复位比特也称重建比特或重置比特。当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后在重新建立连接。
同步比特SYN:在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
终止比特FIN:用来释放一个连接。FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放运输连接。
窗口:用来控制对方发送的数据量。单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小。然后通知发放已确定的发送窗口上限。
窗口的值是经常在动态变化
检验和:检验和字段检验的范围包括首部和数据这两部分
紧急指针:紧急指针在URG=1时才有效,它指出本报文段中的紧急数据的字节数。
选项:长度可变,最长可达40字节
3.最大报文长度MSS
MSS默认值为536字节。注:MSS=TCP报文段长度-TCP首部长度
转载自http://www.cnblogs.com/newwy/p/3232503.html
相关文章推荐
- HTTP长连接和短连接原理浅析
- httpd下载地址
- boost::asio::ip::tcp实现网络通信的小例子
- tcp/ip拥塞控制
- tinyhttp源码阅读(注释)
- TCP三次握手
- TCP可靠传输的实现
- 关于swift - 网络请求+MD5,混合编程
- HTTP的简单理解
- 机器学习中使用的神经网络第二讲笔记
- php使用curl访问https示例分享
- TCP/IP连接的建立
- HTTP报文
- IOS Socket 01-网络协议基础知识
- HTTP的长连接和短连接
- 有关uploadifive的使用经验(转:http://www.cnblogs.com/itBscs/p/4781786.html )
- 有关uploadifive的使用经验(转:http://www.cnblogs.com/itBscs/p/4781786.html )
- HTTP协议详解(真的很经典)
- java基础学习总结——网络编程
- 网络设备简单介绍