TCP协议学习(一)
in Network with 0 comment
Read: 1,301

TCP协议学习(一)

in Network with 0 comment

传输层概述

TCP协议的特点是:面向连接 字节流可靠传输
那么TCP连接是什么意思?我们知道TCP协议通信的双方必须建立连接,然后才能建立数据的读写,那么说在其通信双方都需要为此次连接分配相应的内核资源,以管理连接的状态和连接数据的传输

TCP连接是全双工的,双方的数据读写可以通过一个连接进行,完成TCP连接后双方都需要断开连接,以释放系统资源,TCP连接是一对一,那么说广播和多播则不可以使用TCP,那么UDP则可以

发送端执行的写操作和接收端执行的读操作,这两者之间没有任何的数量关系,TCP的发送没有任何的边界限制,这也就是TCP连接的流的概念

下面展示下TCP字节流服务和UDP的数据包服务的区别

上面展示的是TCP字节流服务的特别,我们可以看出,我们的发送端,每次首先需要把数据放入内核缓冲区中,然后在放入TCP发送缓冲区中,在传输中,我们将TCP缓冲区的数据封装成TCP报文,接受端口,接收到我们的TCP报文后,将其存入到TCP接收缓冲区中,然后我们的接收端仅仅需要执行一次Recv()函数即可

通过图我们可以看出,我们的发送端将数据送到传输层的时候需要封装成UDP报文段,那么我们的接受端接收到这个报文段的时候需要执行recvform()函数,那么说,我们的发送端发送的次数,必然与我们接收端接收的层数是一一对应的,否则将产生丢包的结果

那么在这里有一个问题就是为什么说TCP连接是可靠的?
因为TCP采用了发送应答机制,那么说我们的发送端必须得到接收端的应答才可以完成数据的传输,其次就是超时重传机制,首先我们的发送端将数据进行发送,如果我们在规定的时候内,我们并没有收到接收端的应答,那么说我们的发送端将会重新发送数据

那么传输层在整个TCP/IP协议簇的作用是什么?
那么我们首先来看一张TCP头部结构图:

分析:

我们知道TCP头部信息出现在每个TCP报文段中,它用于指定通信的源端端口和目标端口,管理TCP连接等这些任务

Kind:表明选项的类型
length:指定该选项的总长度
info:选项的具体信息

Responses