TCP总结

一.TCP/IP协议是什么

首先,TCP/IP是为了解决任意两台主机上程序的互联而规定的一组平台无关的协议,如果没有标准的协议,那么每次需要网络通信的时候,应用程序就得处理从网卡的二进制信息流,到路由寻址,到端口连接,这一系列事情,导致网络无法发展壮大,信息的传递也会变得复杂。

首先看TCP/IP协议簇吧,从底层到高层为

网络接口层,网络层,传输层,应用层。

其中网络接口层,指物理连接和相邻网络结点的通信,协议有:ARP协议,RARP协议,以太网协议,无线网(WIFI)协议,比如线路中当前谁可以发送信息,如何识别信息的发送方,信息的格式。可以有不同的实现,比如令牌环,以太网,无线网,x.25等,不同协议的IP转换为物理地址的方式不同,报文格式不同,发送策略不同。

网络层,就是IP层,提供任意两个IP地址的主机的无连接的通信,协议有:IP协议,然后就是各种路由算法,ICMP协议。提供IP报文的格式,IP路由的处理,IP分片,当出现错误(丢失,乱序,无法到达,校验失败)和拥堵时,采用ICMP给源地址发信息。这一层,屏蔽了不同物理网络的不同,对高层提供了统一的接口。

传输层,定义了主机间端口到端口的通信,其实是为了方便进程间通信,抽象出了端口的概念,协议有TCP协议和UDP协议,如何识别端口,报文格式,是有连接还是无连接的。

 分层协议要设计成达到这样一个效果,即目标机的第n层所收到的数据就是源主机第n层所发出的数据。它允许协议的设计者能在一段时间内把注意力集中到某一层上而不必担心较低层的执行情况。

端口其实是操作系统为了方便网络间进行通信提供了机制,相当于一个队列。对UDP来说,如果UDP程序接收到一个报文,就会看这个报文是哪个端口的,如果有端口在监听,就把这个报文放到相应的队列中,如果没有端口监听,就发送一个端口不可达的ICMP报文。如果队列满了,就丢弃这个报文。

TCP提供的有:虚数据连接,面向数据流,有缓冲(不会立即发送),无结构的数据流,全双工连接

TCP是建立在连接的抽象上的,与UDP不同。连接是包括一对ip和端口。

通过滑动窗口协议来控制拥塞,采用序号来确保连接的有序,通过重传来确保连接,

TCP状态机和过程见图



  

 

第二个图有点毛病,主机B的最后一条,不是进入TIME_WAIT状态,是进入CLOSED状态。因为这个时候主机B已经不用再等待什么超时了。主机A之所以会进入TIME_WAIT状态,是因为担心主机B没有收到ACK报文,这样主机B就可能认为主机A没有收到FIN,主机B可能会重新发FIN,这时候如果主机A没有响应,主机B还会持续发送直到超时,主机B很久后才会断开连接。如果在TIME_WAIT状态,主机A会重新发送ACK 

引自 http://blog.csdn.net/zhenjing/article/details/4602493

猜你喜欢

转载自ziwuzu.iteye.com/blog/1873110
今日推荐