计算机网络----- TCP协议
2016-03-03 21:58
309 查看
IP协议提供一种使计算机发送数据和接收数据的方法,但将数据从信源地址传送到目的地址,必须通过TCP协议解决数据包丢失或顺序传递的问题。
TCP 通过检验和,序列号,确认应答,重发机制,连接管理,以及窗口控制等机制实现可靠性传输。
一:通过序列号与确认应答提高可靠性:
TCP中,当发送端的数据到达接收端,接收端主机会返回一个以收到的消息通知,这个消息叫做确认应答(ACK)TCP通过确认应答实现可靠的数据传输。
(当然, 为收到确认应答并不意味着数据一定丢失,也有可能是数据已经接受到只是返回的确认应答在途中丢失,这种情况也会引起重发,与此类似的情况,因此引入一种机制 ,能够确认是否已经接收数据,又能判断是否需要接收)重发控制,确认应答,重复控制可以通过序列号来实现。
二:TCP连接过程 (三次握手)
1:客户端发送一个带SYN标志的TCP报文到服务器,这是三次握手过程中的第一个报文。
2:服务器端回应给客户端,这是第二个报文,报文同时带ACK标志与SYN标志,表示对客户端SYN报文的回应,同时又返回SYN,询问客户端是否准备还数据通信。
3:客户端必须再次回应服务器端一个ACK报文。
三:TCP以段为单位发送数据
在建立TCP连接的同时,也可以确认发送数据包的单位,称其为最大消息长度(MSS)
TCP传输大量数据的时候,是以MSS(最大消息长度)的大小将数据进行分割发送,重发时也是以MSS为单位。
MSS是在三次握手的时候,在两端主机主机间被计算得出。
利用窗口控制提高速度:
Tcp在发送数据的时候是以一个段为单位,但是缺点就是包的往返时间越长通信性能就越低,因此引入窗口概念,确认应答不再是以每个分段,而是以更大的单位进行确认,发送端主机发送了一个段以后不必一直等待确认应答,而是继续发送,该机制实现使用了大量的缓冲区,
上图可以看出没有收到确认应答的数据也能发出去,发送端主机在等到确认返回之前,必须在缓冲区中保留这部分数据,当然在窗口以外的数据以及已经确认的数据,就没有必要进行重发,此时数据就可以从缓存区清除。
当收到确认应答的情况下,将窗口滑动到确认应答中的序列号位置。这种机制被称为滑动窗口机制。
高速重发控制:
当某一端报文丢失后,发送端会一直收到丢失段[序列号] 的确认应答,在窗口较大的情况下,会出现报文段丢失的情况,同一个序号的确认应答将会被重复不断的返回,如果发送端主机连续三次收到同一个确认应答(因为三次才会触发重发机制)就会将对应的数据进行重发。
流控制:
接收端主机向发送端主机发送通知自己可以接收的数据的大小,于是发送端发送不会超过这个限度的数据。TCP 首部中,专门有一个字段用来通知窗口的大小,接收主机将自己可以接收的缓冲区大小通知给发送端,这个值越大,说明网络吞吐量越大。
拥塞控制:
可以有效的减少通信开始时连续发包,导致的网络拥堵,可以避免网络拥塞的情况发生。
TCP首部格式:
TCP 通过检验和,序列号,确认应答,重发机制,连接管理,以及窗口控制等机制实现可靠性传输。
一:通过序列号与确认应答提高可靠性:
TCP中,当发送端的数据到达接收端,接收端主机会返回一个以收到的消息通知,这个消息叫做确认应答(ACK)TCP通过确认应答实现可靠的数据传输。
(当然, 为收到确认应答并不意味着数据一定丢失,也有可能是数据已经接受到只是返回的确认应答在途中丢失,这种情况也会引起重发,与此类似的情况,因此引入一种机制 ,能够确认是否已经接收数据,又能判断是否需要接收)重发控制,确认应答,重复控制可以通过序列号来实现。
二:TCP连接过程 (三次握手)
1:客户端发送一个带SYN标志的TCP报文到服务器,这是三次握手过程中的第一个报文。
2:服务器端回应给客户端,这是第二个报文,报文同时带ACK标志与SYN标志,表示对客户端SYN报文的回应,同时又返回SYN,询问客户端是否准备还数据通信。
3:客户端必须再次回应服务器端一个ACK报文。
三:TCP以段为单位发送数据
在建立TCP连接的同时,也可以确认发送数据包的单位,称其为最大消息长度(MSS)
TCP传输大量数据的时候,是以MSS(最大消息长度)的大小将数据进行分割发送,重发时也是以MSS为单位。
MSS是在三次握手的时候,在两端主机主机间被计算得出。
利用窗口控制提高速度:
Tcp在发送数据的时候是以一个段为单位,但是缺点就是包的往返时间越长通信性能就越低,因此引入窗口概念,确认应答不再是以每个分段,而是以更大的单位进行确认,发送端主机发送了一个段以后不必一直等待确认应答,而是继续发送,该机制实现使用了大量的缓冲区,
上图可以看出没有收到确认应答的数据也能发出去,发送端主机在等到确认返回之前,必须在缓冲区中保留这部分数据,当然在窗口以外的数据以及已经确认的数据,就没有必要进行重发,此时数据就可以从缓存区清除。
当收到确认应答的情况下,将窗口滑动到确认应答中的序列号位置。这种机制被称为滑动窗口机制。
高速重发控制:
当某一端报文丢失后,发送端会一直收到丢失段[序列号] 的确认应答,在窗口较大的情况下,会出现报文段丢失的情况,同一个序号的确认应答将会被重复不断的返回,如果发送端主机连续三次收到同一个确认应答(因为三次才会触发重发机制)就会将对应的数据进行重发。
流控制:
接收端主机向发送端主机发送通知自己可以接收的数据的大小,于是发送端发送不会超过这个限度的数据。TCP 首部中,专门有一个字段用来通知窗口的大小,接收主机将自己可以接收的缓冲区大小通知给发送端,这个值越大,说明网络吞吐量越大。
拥塞控制:
可以有效的减少通信开始时连续发包,导致的网络拥堵,可以避免网络拥塞的情况发生。
TCP首部格式:
相关文章推荐
- 用ConnectivityManager判断网络类型
- 83款 网络爬虫开源软件
- TCP/IP基础(四)
- https+ssl详解
- 基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎
- Linux下套接字详解(六)----基于pthread的多线程的TCP套接字(阻塞/同步/并发)
- 网络蜘蛛的安全隐患及预防方法
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射
- http协议三次握手
- http下载网络资源报错解决办法
- 一个 11 行 Python 代码实现的神经网络
- 稀疏自编码http://deeplearning.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder#Results
- Http、TCP/IP协议与Socket之间的区别
- 利用缓存存储网络下载的图片
- Lighttpd源码阅读--网络服务通信模型
- 深入理解http协议
- poj 3436 最大流的增广路算法
- Bashu2445 -- 【网络流24题-10】餐巾问题
- linux网络编程之-----多播(组播)编程
- FD_SET TCP