我是靠谱客的博主 饱满石头,最近开发中收集的这篇文章主要介绍网络通信与协议理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、通信协议是什么?

1、网络通信协议,是一种网络通信语言,为了连接不同操作系统和硬件体系结构提供通信支持。目的是实现通讯双方(发送方和接收方)能正确无障碍的理解要通信的内容。好比一个广东人和一个山西人打招呼,同样说你好,用方言说的话双方都不懂,那么这时候大家就约定都是用普通话,那么广东人说话山西人懂,山西人说话广东人也能懂,这么就可以愉快的聊天了。同理,计算机之间也需要有一定的约定才能实现正确的发送和接收信息。

2、网络通信协议三要素,语义(表达的意思),语法(表达的形式,接收,格式),时序(事件发生的时序),语义是描述做什么,语法描述怎么做,时序描述什么时候做。

3、协议即是一种约定,按照约定不同的平台系统可以互相明白对方表达的意思。

4、网络模型,为了更好的管理网络通信,人们用分层的体系结构来管理整个过程。主要有两种网络通信模型,OSI七层模型(从下到上依次是,物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)和TCP/IP四层模型(从下到上依次是,数据链路层,网络层,传输层,应用层),OSI七层模型是一种标准,实际应用的很少,而TCP/IP实际应用的最多。TCP/IP中接触最多的是上两层,应用层和传输层。

5、网络通信模型中每个层次是独立的,上次依赖下层提供的服务,而不需要知道下层具体实现。

 

二、以下以TCP/IP四层模型

1、应用层,协议最高层,面对的是人,提供的是人机交互的接口或者界面,直接向用户提供服务,比如web服务,email服务,FTP服务等。同时还要保证服务的高效,可靠,满意。

主要协议有:DNS,URI,HTML,HTTP,SSL/TLS,SMTP, POP, MIME,IMAP,TELNET, SSH, FTP, SNMP, MIB, SIP,RTP,LDAP。

2、传输层,负责端到端(进程到进程)的通信,起到网络通信的桥梁作用。在OSI模型中它是面向网络通信的低三层和面向信息处理的高三层的中间一慈宁宫,起到桥梁作用。位于网络的两台主机之间的真正的数据通信主体不是这两台主机,而是两台主机中的各种应用进程,也就是应用程序。

完成端到端的传输需要两个步骤:一是虚拟传输连接的建立(指面向连接的传输层协议),二是源端用户数据沿着传输连接传送到目的端。整个过程,传输层需要完成8个基本功能,传输层寻址,传输连接建立,数据传输,传输连接释放,流量控制,拥塞控制,多路复用和解复用,崩溃恢复。

主要协议:TCP,UDP, DCCP,UDP-Lite

3、网络层,又被成为中转层,网络层主要的问题是,从A主机把数据运送到B主机,是走高速呢还是飞机呢还是活着呢活着混合方案。也就是网络层关注的是如何将分组从源端沿着网络路径传送到目的端,这里的端指的是主机而不是应用程序。

为了实现端到端的传输目标,网络层必须知道通信子网的拓扑结构,并在拓扑结构中选择适当的路径。同时选择的路由路径要避免发生某些通信线路和路由器负载过重而其他线路和路由器空闲的情形。

总之,网络层主要是为了解决不同网络之间数据传输和转发问题。

网络层主要协议:IP,ARP,ICMP

4、数据链路层(网络接口层)

用来处理连接网络的硬件部分,包括操作系统,硬件设备驱动,网卡,光纤,硬件上的部分都归数据链路层范畴。

TCP/IP数据链路层对应OSI七层模型中的物理层和数据链路层。物理层主要传输的是比特流,这样就屏蔽了物理介质和物理设备的差异。物理链路是不可靠的,数据链路层在物理层的基础上,通过协议实现差错控制、流量控制,将有差错的物理线路变为无差错的数据线路。即TCP/IP中数据链路层最终提供的可靠的物理传输通道。

物理层就是真正的传输数据。没有控制能力。

物理层位于计算机网络体系结构的最底层,负责物理介质上为数据链路层提供原始比特流传输的物理连接。

物理层解决的问题是数据传输,上面所有的层都是封装数据和管理,物理层是传输数据的唯一出口,所有数据到达物理层都会变成二进制载波信号(比特流)。

 

三、数据传输的过程

如无特殊说明,一下网络体系结构都是TCP/IP模型。

1、数据传输分为发送方和接收方,

封包:发送方有用户通过应用层(将数据加入应用层协议头,比如http协议头),应用层发到传输层(传输层将收到的应用层协议增加传输层协议头,比如加入TCP协议头),传输层发到网络层(网络层将收到的传输层数据加入网络层协议头,比如IP协议头),网络层发到数据链路层(数据链路层将网络层的IP分组数据加入以太网头和以太网尾部发送到物理网络上),通过物理网络传输到接收方。以太网驱动程序将数据发送出去。

解包:接收方首先数据链路层接收到数据,(数据链路层将数据的以太网头和尾去掉后)传到网络层,(网络层将数据的网络层协议头去掉,比如IP头)网络层再转给传输层,(传输层将传输层协议头去掉,比如TCP头)传输层转给应用层,(应用层将应用层协议头去掉,比如http协议头)应用层实现和用户交互。

四、TCP/IP协议簇

平时说的TCP/IP协议,指的不单单是TCP和IP协议,而是指能够在不同网络间实现数据传输的协议簇。是指有FTP、SMTP、TCP、UDP、IP等协议构成协议簇。只是因为TCP和IP协议比较有代表性,所以称为TCP/IP。

五、Websocket、Socket、TCP区别

1、Socket,称为套接字,应用层和传输层之间的一个抽象层。主要目的是将传输层的功能抽象成几个接口供应用层调用从而实现进程在网络中的通信。Socket是一组接口。一组接口即是全部,隐藏了TCP/IP协议族的具体实现。

Socket是对TCP/IP的封装,socket本身并不是协议,而是一组调用接口(API),通过socket我们才能使用TCP/IP。

2、Websocket,是基于TCP的一种网络协议,和HTTP一样是应用层协议。它实现了浏览器和服务器之间的全双工通信。解决了http通过轮寻的方式实现全双工效率低下的问题。

 

3、Socket和Websocket区别

就像java和javascript一样,是两种东西,websocket是html5的东西,大多的应用场景是在浏览器。

 

最后

以上就是饱满石头为你收集整理的网络通信与协议理解的全部内容,希望文章能够帮你解决网络通信与协议理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部