OSI是Open System Interconnection的缩写,意为开放式系统互联。是设计和描述计算机网络通讯的基本框架。OSI模型把网络通讯的工做分为7层程序员
应用层(Application): 提供网络与用户应用软件之间的接口服务安全
表示层(Presentation) :提供格式化的表示和转换数据服务,如加密和压缩网络
会话层(Session) :提供包括访问验证和会话管理在内的创建和维护应用之间通讯的机制框架
传输层(Transimission) : 提供创建、维护和取消传输链接功能,负责可靠地传输数据(PC)加密
网络层(Network) :处理网络间路由,确保数据及时传送(路由器)计算机网络
数据链路层(DataLink) :负责无错传输数据,确认帧、发错重传等(交换机)设计
物理层(Physics) : 提供机械、电气、功能和过程特性(网卡、网线、双绞线、同轴电缆、中继器)3d
TCP(Transmission Control Protocol 传输控制协议)是一种面向链接的、可靠的、基于字节流的传输层通讯协议,是互联网的基础,也是每一个程序员必备的基本功。TCP/IP参考模型分为四层,从上到下分别是:应用层、传输层、网络互连层、网络接口层。cdn
TCP功能blog
将数据进行分段打包传输
对每一个数据包编号控制顺序
运输中丢失、重发和丢弃处理
流量控制避免拥塞
数据从源主机传输到目标主机要进行数据封装和数据拆包的过程。数据封装的传输过程当中,在每一层要加入首部信息,有时还要增长尾部信息。数据单元在传输层被称为段(segment),在网络层被称为包(package),在链路层被称为帧(frame)。
层与层之间的合做和分工
数据从发送源传输到接收端要进行数据封装和数据拆包的过程。数据封装的传输过程当中,在每一层要加入首部信息,有时还要增长尾部信息。数据单元在传输层被称为段(segment),在网络层被称为包(package),在链路层被称为帧(frame)。数据->传输层(包)->网络层(段Segment)->数据链路层(帧)
数据封装完毕传输到接收方后,将数据要进行解封装。解封装是把增长的首部信息拆掉,最后把数据传给接收端。以下图
TCP是面向链接的协议,它在源点和终点之间创建虚拟链接,而不是物理链接
在数据通讯以前,发送端与接收端要先创建链接,等数据发送结束后,双方再断开链接
TCP链接的每一方都是由一个IP地址和一个端口组成
ACK: 此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中。有两个取值: 0和1,为1的时候表示应答域有效,反之为0。
FIN: 表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据能够传送了,发送FIN标志位的TCP数据包后,链接将被断开。这个标志的数据包也常常被用于进行端口扫描。
第一次握手主机A经过一个标识为SYN标识位的数据段发送给主机B请求链接,经过该数据段告诉主机B但愿创建链接,须要B应答,并告诉主机B传输的起始序列号
第二次握手是主机B用一个确认应答ACK和同步序列号SYNC标志位的数据段来响应主机A,一是发送ACK告诉主机A收到了数据段,二是通知主机A从哪一个序列号作标记。
第三次握手是主机A确认收到了主机B的数据段并能够开始传输实际数据。
为何要三次握手?
为了防止已失效的链接请求报文段忽然又传送到了服务端,于是产生错误。
好比:一我的和另外一我的说话,其中一我的说你能听到吗,另外一人不回答,两我的交流失败,或者 一我的说中文,另我的说英文,两我的交流仍是失败,为了保证客户端可以接收到服务端的信息并能作出正确的应答,因此才三次握手。
主机A发送FIN控制位发出断开链接的请求
主机B进行响应,确认收到断开链接请求
主机B提出反方向的关闭要求
主机A确认收到的主机B的关闭链接请求
为何四次断开
四次断开和上面的例子同样,若是没有沟通很差,就会致使连接失败,不安全。
TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经所有发送完毕了;可是,这个时候主机1仍是能够接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,可是主机2仍是能够发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,以后彼此就会愉快的中断此次TCP链接。
OSI和TCP/IP模型就简单介绍完了,若是有理解错误的地方,欢迎指正!