纸上得来终觉浅,绝知此事要躬

通俗理解OSI七层模型

物理层

          硬件<————————>硬件

通过1,0的弱电信号形成的比特流,在硬件之间通信。

数据链路层

通过无线电,将有差错的比特流物理通信变为无差错的能可靠传输数据帧的数据链路。

网络层

主要之路由算法。假如A电脑要经过不,B,C,D,E,F……给G发数据,我怎么选择最佳路径?这就是路由要做的事。
于是,发明了网络层。

传输层

TCP(发1万个包)     ————>> 电脑(我只接受了9997个,还差3个,分别是 第1001,2004,5004个包,你再给我发一遍)

TCP 一次发大量的包,露了包,还可以再次发送,效率低

UDP(发20个包)  ————>> 电脑(我都接受了/我只接受了19个包,差一个包,算了不要了。丢了一个包,我卡一下吧)

UDP 一次发少量的包,露了包,不管。效率高,一般适用于多人游戏中,丢包就卡一下子。

会话层

建立一个自动收发包,自动寻址的功能

允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。

表示层

解决在不同的系统之间通信语法的问题,比如window与linu通信。

应用层

将所以的协议和功能应用在在具体的应用程序和web程序中

tcp/ip协议四层模型

            tcp 传输控制协议

             ip 网络地址协议

应用层

            http 超文本传输协议

            talnet 远程登陆

            ssh 远程登陆(保证安全)

        telne协议: 远程登录协议,它使我们能在本地完成远程任务
        OSPF协议: OSPF协议(Open Shorttest Path First, 开放最短路径优先)是一种动态路由更新协议,用于路由器之间的通讯,以告知对方自身的路由信息
        DNS协议: DNS协议(Domain Name Service, 域名服务)提供机器域名到IP地址的转换。如百度的机器域名是www.baidu.com,对应的IP地址是http://119.75.217.109/。
另外注意,ping是应用程序而非协议,它利用网络层的ICMP协议监测网络连接。
应用层协议可以跳过传输层直接使用网络层提供的服务,比如ping程序和OSPF协议;又可以既使用TCP服务,又可以使用UDP服务,如DNS协议

传输层

           打包和确定目的应用程序

           TCP (保证数据的可靠有序),UDP不保证

            http   占用 80 端口

            talnet 占用 22

             ssh   占用  22

             mysql 占用 3306

            TCP协议: TCP协议(Transmission Control Protocol, 传输控制协议)为应用程序提供可靠的、面向连接的、基于流的服务,具有超时重传、数据确认等方式来确保数据包被正确发送到目的端。因此TCP服务是可靠的,使用TCP协议通讯的双方必须先建立起TCP连接,并在系统内核中为该连接维持一些必要的数据结构,比如连接的状态,读写缓冲区,多个定时器等。当通讯结束时双方必须关闭连接以释放这些内核数据。基于流发送意思是数据是没有长度限制,它可源源不断地从通讯的一段流入另一端。
            UDP协议: UDP协议(User Datagram Protocol, 用户数据报协议)与TCP协议相反,它为应用程序提供的是不可靠的、无连接的基于数据报的服务。
无连接: 通讯双方不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收方的地址;
基于数据报的服务: 这是相对于数据流而言的,每个UDP数据报都有一个长度,接收端必须以该长度为最小单位将其内容一次性读出,否则数据将被截断。
UDP不具有发送时是被重发功能,所以UDP协议在内核实现中无需为应用程序的数据保存副本,当UDP数据报被成功发送之后,UDP内核缓冲区中该数据报就被丢弃了。
            SCTP协议: SCTP(Stream Control Transmission Protocol, 流控制传输协议)是为了在因特网上传输电话信号而设计的。
 

互联网


网络层的任务之一就是选择这些中间节点,以确定两台主机间的通讯路径。
其次网络层对上层协议隐藏了网络拓扑连接的细节,在使得传输层看来通讯双方是直接连接的

        IP协议: IP协议(Internet Protocol)是网络层最核心的协议,它根据数据包的目的IP地址来决定如何投递该数据包。若数据包不可直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器去转发,如此循环直至到达目标主机或者发送失败而丢弃该数据包。
        ICMP协议: ICMP协议(Internet Control Message Protocol,因特网控制报文协议)是IP协议的补充,用于检测网络的连接状态,如ping应用程序就是ICMP协议的使用。ICMP包发送是不可靠的,所以不能依靠接收ICMP包解决网络问题;ICMP与TCP/UDP不同,它们是传输层协议,虽然都具有类型域和代码域,但是前者和后者不同,ping用到的ICMP协议,不是端口。ICMP协议使用的是IP协议而非使用下层协议提供的的服务,所以严格来讲它并非网络层协议,而是网络层程序。

网络访问(数据链路层)

实现网卡接口的网络驱动,以处理数据在以太网线等物理媒介上的传输
网络驱动程序隐藏了不同物理网络的不同电气特性,为上层协议提供一个统一的接口

TCP/IP四层模型与OSI七层模型的对应关系