计算机网络体系结构
常见的计算机网络体系结构
分别有OSI体系结构、TCP/IP体系结构
OSI的层次划分不是很合理,功能重复出现了。
因为TCP/IP体系结构在网络层使用的是IP协议,IP协议也叫作网际协议,所以 叫作 网际层。
路由器一般只有网际层和网络接口层。
TCP/IP体系结构的网络接口层并没有规定什么具体的内容。这样做的目的是互连全世界不同的网络接口,如有线以太网接口,无线局域网的wifi接口等等。
IP协议是网际层的核心协议。
TCP和UDP是运输层的核心协议。
应用层则包含了很多网络协议。
IP协议可以将不同的网络接口互连,并且向上面的TCP和UDP协议提供网络互连服务。TCP向应用层的相应协议提供可靠传输的服务。UDP协议则是提供不可靠的传输服务。
TCP和IP协议是两个很重要的协议,常称为TCP IP协议簇。学习计网时,综合OS和TCPIP的优点,有一份五层原理体系结构。
计算机网络体系结构分层的必要性
分层可以将庞大而复杂的问题,转化为若干较小的问题,就可以易于处理等。
计算机网络主要面临的问题:
首先是物理层:
严格来说,传输媒体不属于物理层。计算机网络的传输信号不是方波信号,只是为了方便理解。
假设以上,可以实现主机发送信号0和1了。
假设A要给C发信号,但是全部电脑都接收到了,主机C如何知道是发给自己的呢。BDE又如何知道不是发送给自己的,要解决呢。
这就是 如何标识网络中的各个主机(主机编址问题,如MAC地址。)
主机在发送数据时,要给数据发送目的地址。
但是又引出了第二个问题:如何从信号标识的一连串比特流中区分出地址和数据呢。
也就是需要解决分组的封装格式问题。
对于总线型的网络,还会出现碰撞的问题。
(某个时刻是空闲的,但是突然多台主机发送数据),所以协调主机也需要考虑。
以上的问题全部规划到 数据链路层。
只要解决物理层和数据链路层就可以解决分组在网络上传输了,但仅仅是解决简单的数据传输。
现在有多个网络,面临的问题如下:
但是也会有应用层的问题。
在此基础上,定制各个协议来解决应用进程之间的交互。
总结如下:
分层思想举例
假设此时电脑需要访问一个页面服务器,那么过程如下,注意此时是 应用进程基于网络的通信。
首先应用层封装好一个http报文。
应用层将报文给运输层,运输层添加一个TCP首部。
网络层又给数据报加一个IP首部形成IP数据报。
这个时候就可以被路由器转发了。
数据链路层又加一个首部和尾部,形成了帧。
假设上述的N1网络是以太网,那么以太网的首部格式为:
首部这么做是为了使数据报能在链路上或者网络上传输。能够到达目的地地址。
尾部的格式如下:是为了让目的主机检查收到的帧是否有误码。
然后物理层将这个帧看作是比特流。N1是以太网还会增加前导码。
路由器收到之后,首先将比特流的前导码给去掉,然后交付给链路层。(交付的是帧)。然后去掉帧的首部和尾部之后,交付给网络层,这实际上是IP数据报。
网络层解析首部IP,查出目的地址,然后查找自身的路由表。确定转发端口以便转发。然后再往下传。
先数据链路层加一个首部和尾部,然后物理层看做比特流,由于N2也是以太网,加一个前导码。
到了服务器,也是一层一层拆,然后向上交付(类似发送的逆过程)。然后服务器解析HTTP报文,然后返回一个响应报文,然后过程如前面说的那样。
专用术语
专用术语来自OSI的七层体系结构,但也适用于其他两个体系结构结构。
主要分成三个:实体、协议、服务。
称为逻辑通信是只用考虑这一层的对等通信,不用考虑其他层。是理想中的。
语义:定义收发双方要完成的操作。
如HTTP的GET请求报文需要完成什么过程操作。
服务: