OSI七层模型和TCP/IP协议模型

关于计算机网络相关的基础知识是在大学时期学到过的,不过当时一门心思放在排位上(你懂的),也没有总结的习惯。工作后发现这些东西还是挺重要的。很多大厂的面试也会涉及到这块的内容,所以在这里把相关的知识点做一个梳理。

OSI七层模型

    OSI(Open System Interconnect),开放式系统互联通信参考模型, 简称OSI模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。
    OSI将计算机网络体系结构(architecture)划分为以下七层:
    物理层: 将数据转换为可通过物理介质传送的电子信号,物理层在局部局域网上传送数据帧(data frame),它负责管理计算机通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等。
    数据链路层: 决定访问网络介质的方式。在此层将数据分帧,并处理流控制。数据链路层负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
分为两个子层:逻辑链路控制(logic link control,LLC)子层和介质访问控制(media access control,MAC)子层。
    网络层: 使用权数据路由经过大型网络。网络层决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据。例如:互联网协议(IP)等。
    传输层: 提供终端到终端的可靠连接,传输层把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
    会话层: 允许用户使用简单易记的名称建立连接,会话层负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接
    表示层: 协商数据交换格式。把数据转换为能与接收者的系统格式兼容并适合传输的格式
    应用层: 用户的应用程序和网络之间的接口。应用层提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。
OSI模型图示(网络图片): OSI七层模型图示

TCP/IP模型

TCP/IP协议在一定程度上参考了OSI的体系结构。TCP/IP模型分为5层,有的书上(计算机网络第四版)把该模型划分为4层。
五层:应用层、传输层、网络层、数据链路层、物理层。
四层:应用层、传输层、网络层、网络接口层。

TCP/IP模型和OSI七层模型的对应关系(网络图片):
在这里插入图片描述
在这里插入图片描述

TCP/UDP协议:

    TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。
    TCP:TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接(四次挥手)用来节约系统资源。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;
    UDP:UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,不需要事先建立连接,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。当然,因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。

TCP和UDP的区别:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
3、TCP面向字节流,TCP把数据看成一连串无结构的字节流;UDP是面向报文的。UDP没有拥塞控制,网络出现拥塞不会使源主机的发送速率降低。
4、TCP连接只能是点到点的;UDP支持一对一,一对多,多对多的交互通信。
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

什么时候用TCP?

    当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输等等。

什么时候用UDP?

    当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音,QQ视频,TFTP等等。
    另外说一个题外话,有人肯定会想,直播一定是基于UDP协议,但是这么说并不是绝对的。目前行业里直播还是以TCP占绝对份额,目前常见的直播方案都是上行采用rtmp;下行采用http-flv或者hls,底层都是tcp。利用rtmp协议可以很快搭建一套直播系统,客户端、服务器都有成熟稳定的开源实现。UDP理论上更适合用于直播系统,但开发效率低,周期长。但是从底层UDP和TCP的特性来看,还是UDP适合做实时性通信。

刚才在说明TCP协议的时候,提到了TCP建立连接时的三次握手和关闭连接时的四次挥手,抽空再谈这方面的内容。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值