欢迎来到天天文库
浏览记录
ID:9482811
大小:78.00 KB
页数:18页
时间:2018-05-01
《tcp-ip原理、基础以及在linux上的实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、TCP/IP原理、基础以及在Linux上的实现~教育资源库 OSI参考模型及TCP/IP参考模型 OSI模型(opensysteminterconnectionreferencemodel)是基于国际标准化组织(ISO)的建议而发展起来的,它分为如图3-1所示的七层。当卫星和无线网络出现以后,现有的协议在和这些网络互联时出现了问题,所以需要一种新的参考体系结构,能无缝地连接多个网络。这个体系结构就是TCP/IP参考模型。 TCP协议 因特网在传输层有两种主要的协议:一种是面向连接的协议,一种是无连接的协议。
2、传输控制协议TCP是(transmissioncontrolprotocol)专门用于在不可靠的因特网上提供可靠的、端对端的字节流通信的协议。通过在发送方和接收方分别创建一个称为套接字的通信端口就可以获得TCP服务。所有的TCP连接均是全双工的和点到点的。 发送和接收方TCP实体以数据报的形式交换数据。一个数据报包含一个固定的20字节的头、一个可选部分以及0或多字节的数据。对数据报的大小有两个限制条件:首先,每个数据报(包括TCP头在内)必须适合IP的载荷能力,不能超过65535字节;其次,每个网络都存在最大传输
3、单元MTU(maximumtransferunit),要求每个数据报必须适合MTU。如果一个数据报进入了一个MTU小于该数据报长度的网络,那么处于网络边界上的路由器会把该数据报分解为多个小的数据报。 TCP实体所采用的基本协议是滑动窗口协议。当发送方传送一个数据报时,它将启动计时器。当该数据报到达目的地后,接收方的TCP实体向回发送一个数据报,其中包含有一个确认序号,它等于希望收到的下一个数据报的顺序号。如果发送方的定时器在确认信息到达之前超时,那么发送方会重发该数据报。 2.1TCP数据报头 图2给出了TC
4、P数据报头的格式。 源端口、目的端口:16位长。标识出远端和本地的端口号。 顺序号:32位长。表明了发送的数据报的顺序。 确认号:32位长。希望收到的下一个数据报的序列号。 TCP头长:4位长。表明TCP头中包含多少个32位字。 接下来的6位未用。 ACK:ACK位置1表明确认号是合法的。如果ACK为0,那么数据报不包含确认信息,确认字段被省略。 PSH:表示是带有PUSH标志的数据。接收方因此请求数据报一到便可送往应用程序而不必等到缓冲区装满时才传送。 RST:用于复位由于主机崩溃或其它原因而出现
5、的错误的连接。还可以用于拒绝非法的数据报或拒绝连接请求。 SYN:用于建立连接。 FIN:用于释放连接。 窗口大小:16位长。窗口大小字段表示在确认了字节之后还可以发送多少个字节。 校验和:16位长。是为了确保高可靠性而设置的。它校验头部、数据和伪TCP头部之和。 可选项:0个或多个32位字。包括最大TCP载荷,窗口比例、选择重发数据报等选项。 最大TCP载荷:允许每台主机设定其能够接受的最大的TCP载荷能力。在建立连接期间,双方均声明其最大载荷能力,并选取其中较小的作为标准。如果一台主机未使用该选项,
6、那么其载荷能力缺省设置为536字节。 窗口比例:允许发送方和接收方商定一个合适的窗口比例因子。这一因子使滑动窗口最大能够达到232字节。 选择重发数据报:这个选项允许接收方请求发送指定的一个或多个数据报。 2.2连接管理 在TCP中建立连接采用三次握手的方法。为了建立连接,其中一方,如服务器,通过执行LISTEN和ACCEPT原语被动地等待一个到达的连接请求。 另一方,如客户方,执行CONNECT原语,同时要指明它想连接到的IP地址和端口号,设置它能够接受的TCP数据报的最大值,以及一些可选的用户数据。C
7、ONNECT原语发送一个SYN=1,ACK=0的数据报到目的端,并等待对方响应。 该数据报到达目的端后,那里的TCP实体将察看是否有进程在侦听目的端口字段指定的端口。如果没有,它将发送一个RST=1的应答,拒绝建立该连接。 如果某个进程正在对该端口进行侦听,于是便将到达的TCP数据报交给该进程,它可以接受或拒绝建立连接。如果接受,便发回一个确认数据报。一般情况下,TCP的连接建立过程如图3所示。 为了释放连接,每方均可发送一个FIN=1的TCP数据报,表明本方已无数据发送。当FIN数据报被确认后,那个方向的连
8、接即告关闭。当两个方向上的连接均关闭后,该连接就被完全释放了。一般情况下,释放一个连接需要4个TCP数据报:每个方向均有一个FIN数据报和一个ACK数据报。 2.3传输策略 TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为0时,发送方一般
此文档下载收益归作者所有