连接端及标记
一个tcp数据包包括一个tcp头,后面是选项与数据.一个tcp头包含6个标志位.它们的意义分别为: 【程序编程相关:调查:如何评价电子商务战略】
ip地址与端口被称作套接字,它代表一个tcp连接的一个连接端.为了获得tcp服务,必须在发送机的一个端口上与接收机的一个端口上建立连接.tcp连接用两个连接端来区别,也就是(连接端1,连接端2).连接端互相发送数据包. 【推荐阅读:网站的营销功能】
fin: 表示发送端已经没有数据要求传输了,希望释放连接. 【扩展信息:制约电子商务发展的“新三座大山”】
syn: 标志位用来建立连接,让连接双方同步序列号.如果syn=1而ack=0,则表示该数据包为连接请求,如果syn=1而ack=1则表示接受连接.
rst: 用来复位一个连接.rst标志置位的数据包称为复位包.一般情况下,如果tcp收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包.
urg: 为紧急数据标志.如果它为1,表示本数据包中包含紧急数据.此时紧急数据指针有效.
ack: 为确认标志位.如果为1,表示包中的确认号时有效的.否则,包中的确认号无效.
psh: 如果置位,接收端应尽快把数据传送给应用层.
tcp连接的建立
tcp是一个面向连接的可靠传输协议.面向连接表示两个应用端在利用tcp传送数据前必须先建立tcp连接. tcp的可靠性通过校验与,定时器,数据序号与应答来提供.通过给每个发送的字节分配一个序号,接收端接收到数据后发送应答,tcp协议保证了数据的可靠传输.数据序号用来保证数据的顺序,剔除重复的数据.在一个tcp会话中,有两个数据流(每个连接端从另外一端接收数据,同时向对方发送数据),因此在建立连接时,必须要为每一个数据流分配isn(初始序号).为了了解实现过程,我们假设客户端c希望跟服务器端s建立连接,然后分析连接建立的过程(通常称作三阶段握手):
1: c --syn xxà s
2: c ?-syn yy/ack xx+1------- s
3: c ----ack yy+1--à s
1:c发送一个tcp包(syn 请求)给s,其中标记syn(同步序号)要打开.syn请求指明了客户端希望连接的服务器端端口号与客户端的isn(xx是一个例子).
2:服务器端发回应答,包含自己的syn信息isn(yy)与对c的syn应答,应答时返回下一个希望得到的字节序号(yy+1).
3:c 对从s 来的syn进行应答,数据发送开始.
一些实现细节
大部分tcp/ip实现遵循以下原则:
1:当一个syn或者fin数据包到达一个关闭的端口,tcp丢弃数据包同时发送一个rst数据包.
2:当一个rst数据包到达一个监听端口,rst被丢弃.
3:当一个rst数据包到达一个关闭的端口,rst被丢弃.
... 下一页