分层的好处
- 网络分层的优点:
- 各层独立。某一层并不需要知道它下一层是如何实现的,而仅仅需要知道该层通过层间的接口所提供的服务。由于每一层只实现一种相对独立的功能,因而可以将一个难以处理的复杂问题分解为若干个较容易处理的更小问题,这样,整个问题的复杂度就下降了。
- 灵活性好。当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下各层均不受影响,此外,对某一层提供的服务还可以进行修改。当某层提供的服务不再需要时,甚至可以将这层取消。
- 结构上可分割开。各层都可以采用最合适的技术来实现。
- 易于实现/测试和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个系统已被分解为若干个相对独立的子系统。
- 能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。
- 分层时应注意使每一层的功能非常明确,若层数太少,就会使每一层的协议太复杂。但层数太多又会在描述和综述各层功能的系统工程任务时遇到较多的困难。
计算机网络的体系结构
**OSI标准模型(七层)法律上国际标准 **(理论模型)
应用层
表示层
会话层
运输层
网络层
数据链路层
物理层
TCP/IP 体系结构(五层 or 四层) 具体实现
应用层:
负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
在其他层的基础上,只需指定各中应用层各种协议,并按协议标准编写应用程序,通过应用进程之间的交互来完成特定的网络应用
传输层
负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
如何标识与通信相关的网络进程,进而解决进程之间基于网络的通信问题,如果某个分组在传输过程中出现了“误码”,或者由于路由器繁忙导致路由器丢失分组 ,这样的传输错误应该如何处理
网络层:
负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
因为源主机和目的主机中的传输路径有很多条,就引出路由器如何转发分组,以及如何进行路由选择的问题
数据链路层
负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。
有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。
主机a想发送给主机c数据,主机a发送数据到总线后,会将数据发送给所有连接在总线上的主机,而这时就出现了问题,主机c怎么识别这个数据是发给他的呢?其他主机是如何识别这个数据不是发给他的呢?(主机编制问题,例如MAC地址)
如何从信号所表示的一连串bite流中区分出地址和数据
如果有多态主机同时发送数据到总线,那么该如何协调这种情况
物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞
线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
互连时采用怎样的传输媒介
采用怎样的物理接口
采用怎样的信号表示bit 0 和 1
总结备注:
-
物理层我们考虑的比较少。因此很多时候也可以称为 TCP/IP四层模型。
-
TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。
-
主机内必须有TCP/IP 协议族,而且 连接的路由器中也会有 TCP/IP 协议族,只不过路由器一般只包含 网络接口层和网际层
-
IP协议是网际层的核心协议, IP协议可以将网络接口层的网络接口互连,然后给TCP协议或UDP协议提供网络互连
-
TCP和UDP是TCP/IP 体系结构中运输层的两个重要协议,TCP协议在享受IP协议提供的互连服务基础上,向应用层等协议提供可靠传输的服务;UDP协议在享受IP协议提供的互连服务基础上,向应用层等协议提供不可靠传输的服
-
应用层有较多协议,如HTTP,SMTP,DNS,RTP等
-
浏览器所在主机,应用层生成一个http报文 将http报文交给运输层,运输层在这个http报文加TCP首部,变成TCP数据报
-
将TCP数据报交给网络层,网络层会在这个TCP数据报加IP首部,变成IP数据报
-
将IP数据报交给数据链路层,数据链路层会在这个IP数据报前后加ETH,使之成为 帧
ETH首部是为了让该数据报可以在网络上或者该链路上传输,能够被相应的目的主机接收
ETH尾部作用是为了让目的主机检查收到的帧是否有“误码” -
将帧交给物理层,物理层将帧看作是比特流 ,如果该网络是以太网,那么物理层会在帧的首部加前导码,作用是让目的主机做好接收帧的准备;
-
物理层将相应的比特流转换为某种信号发送到传输媒体
-
该信号通过传输媒体到达路由器
-
路由器的物理层将该信号翻译成比特流,将比特流的首部的前导码去掉交给数据链路层
-
路由器的数据链路层将物理层传送过来的帧的ETH首部和尾部去掉交给网络层
-
路由器的网络层将IP数据报中的IP首部去掉,从中提取出目的网络地址,然后查找自身的路由表,确定转发端口,以便进行转发
-
路由器的网络层向TCP数据报添加IP首部后发给数据链路层,数据链路层将收到的IP数据报前后添加ETH转换为帧,发送给物理层,物理层再将帧看作是比特流,在比特流前面加前导码,之后翻译成某种信号,通过传输媒体传输信号通过传输媒体到达Web服务器
-
Web服务器的物理层将这种信号翻译成bit流,将bit流的前导码去掉,转换为帧交给数据链路层
-
数据链路层将帧的ETH首部和尾部去掉变为IP数据报,交给网络层
-
网络层将IP数据包的IP首部去掉变为TCP数据报,交给运输层
-
运输层将TCP数据报的TCP首部去掉变为 源主机发送的HTTP数据报 后交给应用层
-
应用层将传过来的http报文进行解析,然后给主机发回http响应报文
-
然后进行类似的过程到达源主机