快速导航
进程到进程的通信
TCP在协议族中的位置
TCP使用到的一些熟知端口号
TCP是一种面向交流的协议。这一点与UDP不同。
TCP创造了一种环境,它使得两个进程好像被一个假想的管道所连接,而这个管道经过因特网传输着两个进程之间的数据。如下图所示:
因为发送进程和接收进程可能以不同的速度写入数据和读取数据,因此TCP需要用缓存来存储数据。发送缓存和接收缓存。
上图就是缓存的图例
运输层的是一些报文段。
网络层是数据报。
应用层是报文。
展示了封装和解压的过程,也清晰的看到了数据的变化,报文,报文段,数据报,帧,比特...这么个过程
更真实的一种情况,报文段传输。而不是字节流。
面向连接的服务,步骤
有以下三个阶段
1.这两个TCP在它们之间建立一条虚连接。(不是物理连接)
2.数据在两个方向上交换。
3.连接被终止。
TCP的特点?
编号系统(确认号,序号-每个报文段指派一个序号)
流量控制
差错控制
阻塞控制
TCP报文段的格式?
TCP的连接?
既然IP是无连接协议,为什么使用IP服务的TCP却是面向连接的?
关键在于TCP的连接是虚拟的,而不是物理的。TCP工作在更高的层次上。TCP使用IP的服务把一个个报文段交付给接收方,连接本身是由TCP控制的。如果一个报文段丢失或受损,那么这个报文段就被重传。IP并不知道TCP的重传行为。
如果一个报文段没有按序到达,那么TCP会保留它,直至丢失的报文段到达为止。
三个阶段:建立连接、数据传输、连接终止。
三向握手建立连接
建立完连接之后就要进行数据传输了
最后一个报文段只有确认而没有数据,因为已经没有更多的数据要发送了。
传输完数据,就要关闭连接了,这时候通过三向握手来实现。
半关闭?
在TCP中,连接的一方可以停止发送数据,但仍然可以接收数据,这就成为版关闭(half-close)
服务器端可以继续向客户端发送数据。
连接确立和半关闭终止的(时间线图)
同时打开的时间线图
同时关闭的时间线图
拒绝连接的时间线图
几种报文传递情况?
TCP软件包?