TCP为应用程序提供一种面向连接的、可靠的服务。
1.面向连接的传输。
2.最大报文段长度。
3.传输确认机制。
4.首部和数据的校验和。
5.流量控制。
TCP使用IP作为网络协议,TCP数据段被封装在一个IP数据包内。TCP数据段由TCP Head(头部)和TCP Data(数据)组成。
TCP最多有60个字节的首部,如果没有任选字段,正常的长度是20字节。TCP Head如图3表示的一些字段组成,这里列出几个常用的字段。
16位源端口号: TCP会为源应用程序分配一个源端口号。
16位目的端口号: 目的应用程序的端口号。每个TCP段都包含源和目的端口号,用于寻找发端和收端应用程序。这两个值加上IP首部中的源端IP地址和目的端IP地址可以唯一确定一个TCP连接。
32位序列号: 用于标识从TCP发端想TCP收端发送的数据字节流。
32位确认序列号: 确认序列号包含发送确认的一段所期望收到的下一个序号。确认序号为上次成功收到数据序列号加1。
4位首部长度: 表示首部占32bit字的数目。因为TCP首部的最大长度为60字节。
16位窗口大小 :表示接收端期望接收的字节,由于该字段为16位,因而窗口大小最大值为65535字节。
16位检验和: 检验和覆盖了整个TCP报文段,包括TCP首部和TCP数据。该值有发端计算和存储并由接收端进行验证。
TCP连接的建立是一个三次握手的过程。如图4所示。
1、请求端(通常也称为客户端)发送一个SYN段表示客户期望连接服务器端口,初始序列号为a。
2、服务器发回序列号为b的SYN段作为响应。同时设置确认序号为客户端的序列号加1(a+1)作为对客户端的SYN报文的确认。
3、客户端设置序列号为服务器端的序列号加1(b+1)作为对服务器端SYN报文段的确认。
这三个报文段完成TCP连接的建立。
TCP连接的建立是一个三次握手的过程,而TCP连接的终止则需要经过四次握手,如图5所示。
1、请求端(通常也称为客户端)想终止连接则发送一个FIN段,序列号设置为a。
2、服务器回应一个确认序列号为客户端的序列号加1(a+1)的ACK确认段,作为对客户端的FIN报文的确认。
3、服务器端向客户端发送一个FIN终止段(设置序列号为b,确认号为a+1)。
4、客户端返回一个确认报文(设置序列号为b+1)作为响应。
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)