ISO 7层协议模型和TCP/IP协议模型
7. 应用层 //FTP、TELNET、HTTP 、SMTP
6. 表示层 //表示层完成某些特定的功能,如数据格式转换、数据压缩/解压和加密/解密,尚未完整定义和广泛使用,如TCP/IP协议体系中就没有定义表示层。
5. 会话层 //允许不同机器上的用户之间建立会话关系,即正式的连接
4. 传输层 //管理数据的端到端传输。传输层是真正的从源到目标“端到端”的层
3. 网络层 //关键问题之一是确定分组从源端到目的端如何选择路由。
2. 数据链路层 //保证以帧为单位的数据传输。
1. 物理层 //建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特流传输。
1 层 -3 层是链接起来的, 4 层 -7 层是端到端的。
TCPIP 4层协议模型
1.网络接入层
网络访问层与OSI参考模型中的物理层和数据链路层相对应。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络访问层进行连接。
2.网际互联层
网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。该层有四个主要协议:网际协议(IP)、地址解析协议(ARP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
IP协议是网际互联层最重要的协议,它提供的是一个不可靠、无连接的数据报传递服务。
3.传输层 传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。
4.应用层 应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等。
TCPIP网际互联层的主要协议
IP(Internet Protocol)通过IP地址的形式来管理网络上主机的地址。IPV4有A/B/C/D/E 5类地址,E类为保留地址。A类的子网最大。
IGMP(Internet Group Mgmt Protocol)是Internet 组管理协议,是因特网协议家族中的一个组播协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况,在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
ICMP(Internet Control Message Protocol)是Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ARP(Address Resolution Protocol)是地址解析协议,实现通过IP地址得知其物理地址。
几个特殊IP地址
广播地址:255.255.255.255
回环地址:127.0.0.1
无法分配DHCP地址时的默认地址:169.254.x.x
TCP连接的建立过程
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
TCP连接的结束过程
TCP连接结束时两个两次握手,即A端告知B端它终止从A端到B端的连接,即A端不会再往B端发送数据了(通过向B端发送一个FIN标志)。A端的关闭即告完成,此时,我们说A到B的这条TCP连接处于半关闭状态(half-close)。
但这时,B端还是可以向A端发送数据的,B端可以在将来的任一时间内向A端发送FIN来完成它这端的半关闭。此时,A端的socket可能已经不存在(超时删除),但A主机的TCP/IP协议栈中有一个tcp control socket会代为完成一个ACK动作,完成第二个两次握手,从而彻底断开这条TCP连接
TCP协议的滑动窗口(参见TCPIP详解卷1)
TCP协议使用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。
在数据的发送端,发送的数据有4种状态:
1、已发送并被确认(收到接收端的ACK);
2、已发送未被确认(未收到接收端的ACK),占用滑动窗口空间。当收到ACK时,状态迁移到1,移出滑动窗口;
3、可以被发送,占用滑动窗口空间。被发送方发送后,状态迁移到2;
4、还不能被发送。只有当滑动窗口右移到这个区域后才能被发送。
接收方会在ACK中向发送方通知滑动窗口的大小。窗口的大小由两个因素决定:1、初始值;2、接收方所属的应用是否已经将数据从TCP缓冲中取出。发送方根据ACK报文移动滑动窗口:
1、收到ACK报文后,窗口的左边缘右移,因为有状态2的报文被确认了;
2、根据ACK报文中的窗口大小将窗口右边缘右移。
TCP协议的拥塞控制
TCP协议通过“尽力而为”的尝试来尽量快速的发送数据,直到检测到拥塞,重新下调数据的发送频率。体现为下面几个阶段:
1、慢启动阶段:
当建立新的TCP连接时,拥塞窗口(congestion window,cwnd)初始化为一个数据包大小。源端按cwnd大小发送数据,每收到一个ACK确认,cwnd就增加一个数据包发送量,这样cwnd就将随着回路响应时间(Round Trip Time,RTT)呈指数增长,源端向网络发送的数据量将急剧增加。
2、拥塞避免阶段:
如果TCP源端发现超时或收到3个相同ACK副本时,即认为网络发生了拥塞(主要因为由传输引起的数据包损坏和丢失的概率很小(<<1%))。此时就进入拥塞避免阶段。慢启动阈值(ssthresh)被设置为当前拥塞窗口大小的一半;如果超时,拥塞窗口被置1。如果cwnd>ssthresh,TCP就执行拥塞避免算法,此时,cwnd在每次收到一个ACK时只增加1/cwnd个数据包,这样,在一个RTT内,cwnd将增加1,所以在拥塞避免阶段,cwnd不是呈指数增长,而是线性增长。
3、快速重传和快速恢复阶段:
快速重传是当TCP源端收到到三个相同的ACK副本时,即认为有数据包丢失,则源端重传丢失的数据包,而不必等待RTO超时。同时将ssthresh设置为当前cwnd值的一半,并且将cwnd减为原先的一半。
TCP协议的最大报文长度
在建立连接的时候,通信的双方要互相确认对方的最大报文长度(MSS)。
UDP和TCP的区别
1、UDP不面向连接;2、UDP没有流量控制;3、没有connect的UDP无法返回对端不可达的错误。
原文地址:http://blog.csdn.net/alvanchen/article/details/5746490##1