OSI七层以及TCP/IP参考模型

学习C++socket通信,先复习下计算机网络里的一些知识。OSI即Open System Interconnection(开放式系统互联),它提供了一个网络中计算机通信网络系统结构模型的参考。OSI共有七层。 OSI协议  功能 应用层 文件传输,文件服务,电子邮件,虚拟终端  

表示层

数据格式化,数据加密,代码转换               

会话层

解除或建立与其他节点的联系   

传输层

提供端对端的接口

网络层

为数据包选择路由

数据链路层

帧传输,错误检测

物理层

传输二进制数据                                                                                                                   TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。有四层结构。1.应用层对应OSI的5、6、7层。2.传输层对应osi的传输层。有两个重要的协议(TCP和UDP)。TCP是连接的、可靠的通信协议,而UDP是无连接的、不保证可靠的通信协议,即尽最大努力交付。3.网际互联层(图中的网络互连层)对应OSI的网络层。主要解决主机到主机的通信问题。。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。4. 网络接入层(即主机-网络层)网络接入层与OSI中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议ARP)工作在此层,即OSI参考模型的数据链路层。 TCP的3次握手                                             ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,  SYN置1就表示这是一个连接请求或连接接受报文。第一步:客户端向服务器端发起连接请求,发送syn包到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。seq是序号。第二步:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三步::客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手,就可以传输数据了。 TCP断开连接:第一步:客户端没有数据需要发送,发送一个FIN包(即使没数据也占用一个序号)请求断开连接。第二步:服务端对客户端发送的信息进行确认。发送一个ACK包。(此时可能服务端还有数据需要发送)第三步:服务端发送完需要发送的数据后,发送FIN包和ACK包,确认序号和上一个ack一样,此时为半关闭状态。第四步:客户端收到消息,发送ACK包,等待2MSL后,关闭连接。MSL(maximum segment lifetime)是一个数据报在网络中单向发出到认定丢失的时间,一个数据报有可能在发送图中或是其响应过程中成为残余数据报,确认一个数据报及其响应的丢弃的需要两倍的MSL. 

相关内容推荐