。缓冲区会容纳尽可能多的数据,假如在缓冲区填布满以前看到PUSH位,将返回缓冲区
中的数据并设置PUSH 。在处理紧急状态时,假如有URGENT标记,还有紧急数据;假如没
有URGENT标记了,就返回所有紧急数据,用户也离开紧急状态 。请注重,在紧急指针指
向的点以后的那些数据不能和紧急数据一起返回,即使它们在同一个缓冲区内,当然,
假如用户指定要这么做例外 。
为了区别多个RECEIVE并保证缓冲区不被布满,返回的数据中也要包括缓冲区指针和一个
计数器指明现在接收了多少数据 。RECEIVE可以有自己专用了缓冲区,也可以和用户共享
一个缓冲区 。
Close
格式: CLOSE (本地连接名)
此命令关闭连接,假如连接未打开,或未授权可以关闭连接返回错误 。在关闭的时候应
该注重正常关闭,让所有的发送都发送完数据,也可以如上所说在CLOSE后面加上几个S
END,这就要求用户在收到CLOSE后仍然要进行接收 。因此,CLOSE意指“我没有更多的数
据要发了”,并不代表“我不再发送任何数据了” 。关闭方也可能在超时前不能发出所
有数据,这种情况下,要由CLOSE转入ABORT状态 。用户可以自己决定在任何时间关闭连
接,也可以根据TCP返回的提示关闭 。因此关闭操作要和外TCP进行通信,因此在关闭状
态可能要呆一会儿,在CLOSE没有返回前调用打开,会返回错误 。
Status
格式: STATUS (本地连接名) -> status data
这个命令和具体的实现有关,而且有可能会有负作用 。返回的信息通常来自有连接相关
的TCB 。返回的数据块中包括下面的信息:本地套接字,外套接字,本地连接名,接收窗
口,发送窗口,连接状态,等待确认的缓冲区数,等待接收的缓冲区数,紧急状态,优
先级,security/compartment和传输超时 。因此实现不同,所以上述数据项中可能有几
项没有意义或根本不存在 。假如调用进程没有被授权使用这一连接,返回错误 。这一点
会防止未被授权的进程获得连接状态 。
Abort
格式: ABORT (本地连接名)
此命令中止所有SEND和RECEIVE,删除TCB,将发送非凡的RESERT信息到对方TCP 。具体的
返回信息会因实现不同而不同 。
TCP到用户信息
假定操作系统提供一种可以使TCP异步传送信息到用户程序的机制 。当TCP确实通知用户
程序时会返回一些特定的信息 。通常在这些信息中也会有错误信息,在其它情况下会有
关于完成SEND或RECEIVE或其它用户调用的相关信息 。会提供下面的几种消息:
本地连接名 都提供
响应串 都提供
缓冲区地址 发送和接收
字节记数 接收
Push标记 接收
Urgent标记 接收
TCP和下层接口
TCP实际上调用下层服务才能在网络上传输数据,在互联网上我们通常认为TCP的下层是
IP协议 。假如下层是IP层,它提供一些类于服务类型和生存时间的参数 。TCP使用这些参
数的如下设置:
Type of Service = Precedence: routine, Delay: normal, Throughput: normal, Re
liability: normal;或是数字00000000 。
Time to Live = 一分钟,或是数字00111100 。
请注重:假定的最大数据段的生存时间为2分钟,这里人为指定为1分钟 。
假如下层是IP而且使用源地址路由,接口必须答应路由信息的通信 。这对建立连接和进
行路由是十分重要的 。当然也可以不使用IP协议作为TCP的底层协议,但无论下层协议是
什么,都必须提供源地址,目的地址和协议域,以及一些决定TCP长度的域,总之一句话
推荐阅读
- Transmission Control Protocol, TCP 传输控制协议
- IPCP PPP Internet协议控制协议
- ICMP Internet控制信息协议
- CIP 传输协议
- TCP/IP协议
- 网络传输协议
- TCP-传输控制协议
- 苹果手机中隔空投送传输失败具体原因介绍
- 1 TCP/IP协议栈在嵌入式异构网络中的应用
- 有效控制猪场潮湿