前文说过,在OSI中将网络分为7层,这是理论上将其分为7层,但实际上可以将其分为4层。如TCP协议就是将其分为4层。理论只是提出一种指导意见,但不是行业范本。
驱动层只关系有没有接到包,不关心包经过多少次转发,驱动层只负责向应用层传递数据或转发数据。
分层只对本层工作负责,只要每层都正常工作,就一定能用。对于网络通信的讨论与对比只与同一层有关,跨层的讨论是无意义的。
TCP/IP模型与OSI七层模型对照:
B/S架构(broswer/server)浏览器、服务器架构,浏览器做客户端。
C/S架构(client/server)客户端、服务器架构。
TCP协议工作在传输层,对上为应用层,对下为网络(IP)层。对上应用层服务socket API。
TCP协议面向连接,通信前必须完成三次握手建立关系之后再进行通信。
TCP协议,至今使用TCP协议的原因,就是因为其可靠的传输。上层不用担心,不怕丢包、乱序等。①传输有效信息前要求双方先握手,建立link后通信。②TCP在接受方收到数据包后会ack(访问)发给对方,若发送方未收到ack会丢包重传(丢包机制不收到ack就重发)。③TCP有效数据内容会带有校验,防止在传输过程中损坏。④TCP会与网络带宽自动调节适配速率(滑动窗口技术),速度越高,查看丢包情况,以此进行速率调整。⑤发送方会给各分隔报文进行编号,接受方关于校验编号,一旦顺序错误就要求重发。
协议栈,已经完成了封装,实现的协议,可以直接调用。
TCP的三次握手四次挥手,在建立通信时候要进行三次握手,这是三次单向通信:
建立连接时候的条件:①服务器listen时,客户端发起connect。②建立3次握手。
关闭连接的条件:①有服务器或客户端发起关闭要求。②关闭时候建立四次挥手。
基于TCP通信的服务模式:①具有公网IP地址服务器(或动态IP映射,每次连接IP不一样达到复用)。②服务器端socket、bind、listen 后处于监听状态。③客户端socket后直接connect发起link。④服务器收到并同意客户端接入后建立TCP连接,然后双方开始收发数据,收发时是双向的,双方均可发起。