TCP/IP传输层协议

发布者:EternalSmile最新更新时间:2015-05-27 来源: 51hei关键字:TCP  IP  传输层协议 手机看文章 扫描二维码
随时随地手机看文章
当在Windows XP中同时运行多个网络应用程序时,每个应用程序都会产生自己的
数据流,传输层是用什么方法区分不同应用程序的数据流呢?
   
在数据流被分段(分组)以后,传输层依靠什么来重新组装这些数据流呢?
   
如果某个数据段在传输过冲中丢失了或重复了,可靠的传输协议依据什么去要求
重传这些数据或丢弃多余的数据呢?
   
带着这些问题,下面来谈论传输层所提供的服务。
   
传输层的主要功能是分割并重新组装上层提供的数据流,为数据流提供端对端的
传输服务。
   
在TCP/IP协议中,有两个传输层协议:传输控制协议(TCP)和用户数据包协议(UDP)
TCP是一个可靠的面向连接的协议,UDP是不可靠的或非连接的协议。这种面向连接和
非连接的通信方式的区别,就像打电话和寄明信片一样。打电话的双方在正式通话之
前都会说“喂”,确定对方在线以后才开始通话,会话结束时都要说“再见”,然后
才挂下电话。而寄明信片却没有这种机制,寄出去了但不管对方是否收到。
 
端口号
每个应用程序都会产生自己的数据流,这些数据流可以把目标主机上相应的服务程序
看作自己的目的地,对于传输层来说,它只需要知道目标主机上的哪个服务程序来响
应这应用程序,而不需要知道这个服务程序具体是干什么的。因此,传输层使用一个
抽象的端口号来标识这些应用程序和服务程序。
 
端口号的功能及应用特点
端口号用来跟踪网络间同时发生的不同会话。TCP和UDP可以同时接收多个应用程序送
来的数据流,用端口号来区分他们,然后送给适当的应用程序处理。这时多路分解技
术的体现,它可以确保正确的用户程序收到正确的数据。因此,每个应用程序发送数
据前都会与操作系统进行协商,获得响应的源端口号和目标端口号。
 
在主机发送应用程序的数据之前,都必须确认端口号,如何分配这些端口号呢?一般
有两种情况,使用中央管理机构统一分配的端口号和使用动态绑定。
 
使用中央管理机构统一分贝的端口号。应用程序的开发者们都默认在RFC1700中定义的
特殊端口号,在进行软件设计时,都要遵从RFC1700中定义的规则,不能随便使用已经
定义的端口号,那么系统将在一个特定的取值范围随机地为应用程序分配一个端口号。
例如,任何Telnet应用中的会话都应用标准端口号23。
 
使用动态绑定。如果一个应用程序的会话没有涉及到特殊的端口号,那么系统将在一个
特定的取值方位内随机地为应用程序分配一个端口号。在应用程序进行通信以前,如果
不知道对方的端口号,就必须发送请求以获得对方的端口号。
 
RFC(Request for Comments,征求意见资料)是一个资料系列,始创于1969年,其中描述
了关于Internet的协议实验,并不是所有RFC资料都是描述Internet标准的,但所有
Internet标准都是作为RFC资料编写的。RFC资料中提交的协议都是Internet研究人员和
开发人员根据自己的情况建立、修改和扩充的,因此不同于CCITT(国际电报电话咨询委
员会) 和ANSI(美国国家标准协会)等组织所倡导的并经过正式评审和标准化处理的协议
Internet RFC有3种状态:Proposed(提案)、Draft(草案)和Full(标准)。
 
TCP/IP的设计者们采用一种混合方式实现端口号地址的管理,终端系统利用源系统端口
号来选择合适的应用程序,但是源系统的源端口号由源系统动态分配。
 
常用的端口号介绍
目前的端口号的分配情况大致如下:
小于255的端口号用于公共应用
255~1023是特定供应商应用程序的注册端口号
高于1023的端口号未作规定。
 
 
 
常用应用层协议或应用程序 端口号
  
UPP
TCP
FTP
-
21
Telnet
-
23
SMTP
-
25
DNS
53
-
TFTP
69
-
SNMP
161
-
HTTP
-
80
DHCP
-
67
RPC(远程调用)
-
135

下面举例说明端口号的使用过程。
主机A要Telnet到主机B。主机A首先向TCP请求一个可用端口,假如TCP分配一个为1088
的端口,主机A将目标端口号置为23。A和B通信以后,B看到A过来的端口号为23,就知
道这时Telnet应用,它就会为此创建一个Telnet会话。
 
假如同一系统中有多个Telnet用户,会发生什么情况呢?当主机A上第二个用户要Telne到
主机B时(其实是在主机A与主机B之间建立第二个Telnet进程),主机A的第二个用户向TCP
TCP会选出另外一个可使用的端口号,假如为10099,给第二个用户。主机B上便会创建
第二个Telnet会话。
 
所以在统一IP地址上具有不同端口号的两个连接是不同的。IP地址和端口号被用来唯一地
确定数据连接的途径。
UDP
UDP是TCP/IP的另一个非常重要的协议。
 

 
 
UDP数据域的头部共占用了8个字节
 
                                             UDP数据域的头格式描述
名称
描述
源端口
调用的端口号
目的端口
被调用的端口号
报文长度
记录UDP数据包中的8位组数目包括UDP数据的长度
最小值为8(数据部分为0时)
校验和
头标和数据域计算的校验和,这一项是可选的,为的
是在高可靠性的网路上尽量减少开销
数据
上层协议的数据

UDP为应用程序提供的是一种不可靠的、非连接的分组交付服务,UDP报文可能出现
丢失、重复、时延、乱序、连接失效的问题。但是正式由于它不提供这种可靠性,所
以它的开销很小。换句话说,UDP提供了一种在高效可靠的网络上传输数据而不用消
耗不必要的网络资源和处理时间的通信方式。使用UDP的协议包括TFTP、SNMP、DNS
DHCP。UDP很适合这种客户机像服务器发送简单服务请求的环境,因为这种服务的开
销本来就很小,如果在喀什或者结束时加入类似TCP三次握手的过程,网络的实际利用
将会变得很低。
 
UDP还可以用于操作信息的登录。例如,像日志服务器 syslog发送日志信息,采用UDP
不会导致多台设备向一台服务器发送日志信息而引起过载。
 
UDP依靠上层协议提供可靠性,包括处理报文的丢失、重复、时延、乱序、连接失效
等问题。如Real流格式媒体就是使用应用程序协议来保证数据的正确传输。
TCP
在上文中已经提到UDP为应用程序提供的是一种不可靠的、非连接的分组的交付服务。当网络硬件失效
或者负担太重时,数据段可能会产生丢失、重复、时延、乱序等现象,这些都会导致通信不正常。如果
让应用程序来负担差错检测和恢复的工作,将给程序员带来很多复杂的工作,所以使用独立的通信协议
来保证通信的可靠性是非常必要的。[page]
 
传输控制协议TCP是在RFC793中定义的,它是一个面向连接的可靠的通信协议。总的来说,TCP主要提
供主要提供一下服务。
 
面向连接的虚电路:这有些和打电话相似,在开始传输之前,通信双方要进行三次握手来建立连接,以保
证连接的可靠性。在传输过程中,通信双方的协议模块继续进行通信,以确保正确到达(例如,接收会用
ACK应答发送方的报文段,发送方对未被应答的报文段提供重传)。如果在传输过程中通信失败了(例如传
输路径上的某个网络接口失效),通信双方都会收到错误报告。在通信结束时,通信双方会使用改进的三次
握手来关闭连接。
 
面向流:当通信双方传输大量数据时,TCP将数据流看作可分为字节的流,进行分段(分组),接收方将收到
的报文段按原有顺序复原。
 
流量控制,避免拥塞;为了提高传输效率和减少网络通信量(协议之间的通信),TCP会尽量一次传输足够多
的数据。
 
多路分解技术(多路复用技术):用端口号来实现。
 
全双工连接:TCP提供全双工连接,可以在一条连接上同时传输两个独立的、流向相反的数据流。
 
TCP头格式

 
TCP头共占用了20个字节
名称
描述
源端口
调用的端口号
目的端口
被调用的端口号
序号
确保数据到达的序列正确的编号
应答号
期望下一个TCP数据段
数据偏移(头长度)
以32位为单位的报头长度
保留
置为0
编码号
开始、终止会话之类的控制功能
窗口
用来控制流量
校验和
头标和数据域计算的校验和
紧急
指示紧急数据的末端
可选项
当前定义项:TCP端的最大值
数据
上层协议的数据

建立TCP连接:三次握手
TCP是面向连接的,在面向连接的环境中,开始传输数据之前,在两个终端之间必须先建立一个连接。建立
连接的过程可以却确保通信双方在发送应用数据包之前静静准备好了传送和接收数据。对于一个要建立的连
接,通信双方必须用彼此的初始化序列号seq和来自对方成功传输确认的应答号ack来同步。(ack号致命希望收
到的下一个八位组的编号)习惯上将同步信号写为SYN,应答信号为ACK。整个同步的过程称为三次握手。
 

 
 
1)主机A发送SYN给主机B:我的序列号seq是X。
2)主机B发送SYN、ACK给主机A:我的序列号seq是X+1,应答号是X+1(等待接收第X+1号八位组)。
3)主机B发送SYN、ACK给主机B:我的序列号seq是X+1,应答号是Y+1.
   通过以上3个步骤(三次握手),TCP连接连接建立,开始传输数据。任何机器上的TCP都能被动地
   等待握手或主动地发起握手。一旦连接建立,数据可以对等地双向流动。
 
如果TCP使用1作为每次建立连接的初始化序列号,当本地系统重启后,远程系统会认为以前的连接依然存
在。所以每次连接时,主机都会随机选择一个初始化序列号,用它来辨别所传输的八位组在数据流中的位
置。然后双方要对各自的序列号进行协商,因为接收收到第一个SYN时,他并不知道这是否一个被延迟的
旧信号。所以它必须要求发送验证这个SYN。
 
一般情况下,TCP使用最少信息的报文段来实现三次握手,这对减少网络通信流量是有效的。总之,三次握
手使通信双方做好了传输数据的准备,并且使通信通信双方统一了初始化序列号。
 
关闭TCP连接:改进的三次握手
对于一个已经建立的连接,TCP使用改进的三次握手来结束通话(使用一个带有FIN附加标记的报文段)。
1)当主机A的应用程序通知TCP数据已经完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN理解为
   finish)。
2)主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是向主机A发送一个确认ACK,同时
   同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK为了防止在这段时间内,对方重传FIN报文段)。
3)主机B的应用程序告诉TCP:我要彻底的关闭的关闭连接,TCP向主机A送第二个FIN报文段。
4)主机A收到第二个FIN报文段后,向主机B发送一个ACK表示连接彻底关闭。 
 

 
 
TCP的可靠性
TCP是面向流的,即数据段被当作字节的序列化进行传输。
在通过三次握手建立连接时,序列号被初始化。在传输过程中,TCP继续使用这个序列号来标记每一个发送的数据段
没发送一个数据段,序列号加1.接收站点一句序列号重新组装缩所收到数据段。为什么要依靠序列号来重组数据段呢?
例如,在一个告诉高速链路与低速链路并存的网络上,可能会出现高速链路比低速链路上的数据段提前到达的情况,
此时就必须依靠序列号来重组数据段,这就是序列号的作用之一。
 
在传输过程中,确认号ACK的作用是告诉发送端那些数据包已经成功接收,并且确认号会向发送端指出了接收端希望
收到的下一个数据段的序列号,这种机制称为预期确认,即确认号等于下一个预期的位元组。
 
在TCP/IP网络中,存在超时与重传两种现象。如果在传输过程中丢失了某个序列号的数据段,导致发送端在给定时间
间隔内得不到那个数据段的应答,那么那个丢失数据段就会被要求重发。数据段会被保存在发送端的缓冲区中,直
到发送端接收到应答号,它才会释放这个缓冲区。这种机制被称为肯定确认与重新传输(Positive Acknowledgement and
Retransimission,PAR),他是虚脱通信协议用来确保可信度的一种技术。
 
序列号的第二个作用就是消除网络中的重复包(同步复制)。例如在网络拥塞时,发送端迟迟没有收到接收端某个数据段
的ACK包,它可能会认为这个序列号的数据段丢失了,于是它会重新发送,这种情况可能会导致接收端在网络恢复正
常后收到两个同样序列号的数据段,此时接收端会自动丢弃第二个一样数据段。
 
序列号和应答号为TCP提供了一种纠错机制,提高了TCP的可靠性。
关键字:TCP  IP  传输层协议 引用地址:TCP/IP传输层协议

上一篇:tcp/ip一帧数据的内容与位数
下一篇:ENC28J60电路图与调试资料

推荐阅读最新更新时间:2024-03-16 14:03

CEVA宣布提供RivieraWaves蓝牙5.1 IP
CEVA,全球领先的智能和互联设备信号处理平台和人工智能处理器IP授权许可厂商宣布提供RivieraWaves蓝牙5.1 IP。这款IP支持通过到达角(AoA)和出发角(AoD)进行测向的热门全新功能,从而实现增强的定位服务。CEVA同时提供蓝牙双模和低能耗蓝牙两种版本。 ABI Research研究分析师Henrique Rocha评论道:“实时定位系统(RTLS)和室内定位系统(IPS)具有巨大的市场潜力,涵盖包括智能制造、医疗保健、零售中的接近服务、机场/商场/酒店的寻路等众多市场领域。随着AoA和AoD测向功能正式成为蓝牙5.1标准的一部分,蓝牙技术提供了具有前所未有的厘米级精度的定位服务解决方案改进。随着这个行业
[物联网]
智原发表PowerSlash(TM)IP于联电55ULP 支持物联网应用开发
台湾新竹2016年10月12日电 /美通社/ -- 联华电子(UMC,TWSE: 2303)与ASIC设计服务暨IP研发销售厂商智原科技(Faraday Technology Corporation,TWSE:3035)今日共同发表智原科技于联电55奈米超低功耗工艺(55ULP)的 PowerSlash 基础IP方案。智原 PowerSlash 与联电工艺技术相互结合设计,为超低功耗的无线应用需求技术进行优化,满足无线物联网产品的电池长期寿命需求。 智原科技营销暨投资副总于德洵表示: 物联网应用建构过程中,效能往往受制于低功耗技术。而今透过联电55奈米超低功耗技术以及智原 PowerSlash IP 的加速模式(Turbo Mo
[物联网]
谷歌Pixel防水测试 IP53也能坚持30分钟
    作为忠实安卓用户,购机一定会首选谷歌的Nexus,不过在今年Nexus已经终结谷歌开启了全新的Pixel系列。在全新的产品中谷歌终于为心机加入了防水功能,只不过级别仅为IP53,近日网上就传出了对该机防水性能的测试视频。 测试场景(图片截自测试视频)   在视频中测试者对三种防水测试:首先采用喷洒水雾的方式测试;接着放置于积水的浅水塘一会测试;完全淹没水下的容器内放置30分钟;在所有测试结束后谷歌Pixel依旧可以正常使用。 测试场景(图片截自测试视频)     根据官方宣称IPx3的防水等级能够承受水淋,在雨天使用时完全没问题的(不过一般用户也不会再这种环境下使用),而在此次视频测试中我们也能看出来Pixe
[手机便携]
NiosII的I2C控制IP及其在成像系统中的应用
  IP的硬件结构及寄存器   1.1 IP硬件结构   IP内部结构如图1所示。主要由波特率时钟寄存器、寄存器组控制器、并行I/O接口、I2C可编程接口、I2C接口引擎5个模块组成。   波特率时钟产生器用来产生I2C IP工作的基本时钟频率;寄存器组控制器用来对寄存器进行设置,设置数据通过并行I/O接口传送到该模块中;并行I/O接口模块用来处理可编程接口模块传送过来的命令;I2C可编程接口模块用来设置IP各个寄存器的地址;I2C接口引擎模块执行I2C总线上数据的传输。   1.2  寄存器结构   I2C控制IP主要由6个寄存器构成,如表1所列。通过对寄存器的读写可以方便地控制I2C总线数据的传输,从而
[嵌入式]
还原真实IP地址荒:中国IPv6申请仅为美国1/10
  IP地址枯竭的话题,在业界已是“老生常谈”。本报就此曾采访过国际电信联盟副秘书长赵厚麟、清华大学教授吴建平、北京邮电大学教授马严等多位权威专家。学术界不遗余力地呼吁发展IPv6应对IPv4地址枯竭,但久闻楼梯响,不见君下楼,IPv6对于老百姓和广大网民来说仍是似懂非懂的纸上谈兵,“IP地址荒”背后的真实现状究竟如何?    IP地址亚洲基本告罄   4月15日,亚太互联网络信息中心(APNIC)宣布,IPv4地址资源仅剩下最后一组。   虽然余下的IP地址已经不多,但这并不意味着企业和运营商将争抢剩下来的这部分存量地址,APNIC总裁Paul Wilson向记者表示,企业是不能争夺剩余IP地址空间的,种种迹象表明,
[网络通信]
浅谈物位测量产品的IP防护等级
  IP防护等级是指产品防尘防水的能力,IP防护等级是由两个数字所组成,第1个数字表示电器防尘、防止外物侵入的等级,这里所指的外物含工具,人的手指等均不可接触到电器内之带电部分,以免触电。第2个数字表示电器防湿气、防水侵入的密闭程度。如下表所示:   通过大量实例,我们发现,一旦有水或灰尘进入产品外壳里面,将会造成产品失效或故障,尤其是在恶劣的工业场所,由于IP防护等级的原因,更容易造成生产安全事故。   那么如何才能提高产品的IP防护等级呢?可以从以下两方面考虑。   一是结构设计。在产品结构的防尘防水设计中,接合面是最薄弱的地方,大部分的灰尘、水汽和杂质都是通过接合面进入产品内部的,因此应尽量减少接合面的设计;同时
[测试测量]
浅谈物位测量产品的<font color='red'>IP</font>防护等级
Imagination宣布,推出两款新的 PowerVR Rogue GPU IP 内核
2016 年 1 月 13 日 ─ Imagination Technologies 宣布,推出两款新的 PowerVR Rogue GPU IP 内核,可协助客户为下一代设备开发具备优异视觉与计算摄影学 (computational photography) 应用体验的高品质图形。通过增加对 OpenCL 2.0* 的支持,以及提升视觉应用的功耗/性能/面积,新款PowerVR Series7XT Plus GPU 进一步拓展了 Imagination 的旗舰级 Series7XT 产品组合。 运用 PowerVR Series7XT Plus GPU,客户能利用硬件虚拟化、多域安全性、硬件曲面细分 (hardware
[物联网]
飞思卡尔采用Chips&Media 视频编解码IP
韩国首尔– 2012年4月23日 – Chips&Media公司,领先的视频IP核供应商, 今天宣布其经充分验证的Coda9A0视频编解码IP已提供给包括飞思卡尔(Freescale)等合作伙伴,并会用于i.MX6系列之后的未来i.MX应用处理器中。. Chips&Media的CODA9A0是一个多标准,多码流视频解码/编码IP核,能够为最广泛支持的视频标准提供行业领先的视频性能。此外CODA9A0支持的分辨率高达4Kx2K,这是1080p分辨率的4倍,以充分满足先进的全高清帧包装S3D视频影像格式和身临其境远程呈现体验。CODA9A0核心还增加了超低延迟的编码能力,可用于各种实时交互多媒体应用领域,包括实时转码,视频会议/沟通
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved