五层协议的体系结构
学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点 , 采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚 。
搞定计算机网络面试,看这篇就够了(一)
结合互联网的情况 , 自上而下地,非常简要的介绍一下各层的作用 。
1 应用层
应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用 。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则 。对于不同的网络应用需要不同的应用层协议 。在互联网中应用层协议很多,如域名系统DNS , 支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等 。我们把应用层交互的数据单元称为报文 。
域名系统
域名系统(Domain Name System缩写 DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网 , 而不用去记住能够被机器直接读取的IP数串 。(百度百科)例如:一个公司的 Web 网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称 。例如上面提到的微软公司的域名,类似的还有:IBM 公司的域名是 www.ibm.com、Oracle 公司的域名是 www.oracle.com、Cisco公司的域名是 www.cisco.com 等 。
HTTP协议
超文本传输协议(HTTP , HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议 。所有的 WWW(万维网) 文件都必须遵守这个标准 。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法 。(百度百科)
2 运输层
运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务 。应用进程利用该服务传送应用层报文 。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务 。由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能 。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反 , 是运输层把收到的信息分别交付上面应用层中的相应进程 。
运输层主要使用以下两种协议
UDP 的主要特点
TCP 的主要特点
3 网络层
网络层(network layer)负责为分组交换网上的不同主机提供通信服务 。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送 。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报 , 简称 数据报 。
这里要注意:不要把运输层的“用户数据报 UDP ”和网络层的“ IP 数据报”弄混 。另外 , 无论是哪一层的数据单元,都可笼统地用“分组”来表示 。
网络层的另一个任务就是选择合适的路由,使源主机运输层所传下来的分株,能通过网络层中的路由器找到目的主机 。
这里强调指出,网络层中的“网络”二字已经不是我们通常谈到的具体网络,而是指计算机网络体系结构模型中第三层的名称.
互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的 。互联网使用的网络层协议是无连接的网际协议(Intert Prococol)和许多路由选择协议,因此互联网的网络层也叫做网际层或IP层 。
4 数据链路层
数据链路层(data link layer)通常简称为链路层 。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议 。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装程?。诹礁鱿嗔诮诘慵涞牧绰飞洗椭?。每一帧包括数据和必要的控制信息(如同步信息 , 地址信息 , 差错控制等) 。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束 。这样,数据链路层在收到一个帧后 , 就可从中提出数据部分 , 上交给网络层 。控制信息还使接收端能够检测到所收到的帧中有误差错 。如果发现差错 , 数据链路层就简单地丢弃这个出了差错的帧,以避免继续在网络中传送下去白白浪费网络资源 。如果需要改正数据在链路层传输时出现差错(这就是说 , 数据链路层不仅要检错,而且还要纠错),那么就要采用可靠性传输协议来纠正出现的差错 。这种方法会使链路层的协议复杂些 。
5 物理层
在物理层上所传送的数据单位是比特 。物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异 。使其上面的数据链路层不必考虑网络的具体传输介质是什么 。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化 , 对传送的比特流来说,这个电路好像是看不见的 。
在互联网使用的各种协中最重要和最著名的就是 TCP/IP 两个协议 。现在人们经常提到的TCP/IP并不一定单指TCP和IP这两个具体的协议,而往往表示互联网所使用的整个TCP/IP协议族 。
总结一下
上面我们对计算机网络的五层体系结构有了初步的了解,下面附送一张七层体系结构图总结一下 。
搞定计算机网络面试,看这篇就够了(一)
为了准确无误地把数据送达目标处 , TCP协议采用了三次握手策略 。
漫画图解:
图片来源:《图解HTTP》
搞定计算机网络面试,看这篇就够了(一)
简单示意图:
搞定计算机网络面试,看这篇就够了(一)
为什么要三次握手
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的 。
第一次握手:Client 什么都不能确认;Server 确认了对方发送正常
第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己接收正常,对方发送正常
第三次握手:Client 确认了:自己发送、接收正常 , 对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送接收正常
所以三次握手就能确认双发收发功能都正常 , 缺一不可 。
为什么要传回 SYN
接收端传回发送端所发送的 SYN 是为了告诉发送端 , 我接收到的信息确实就是你所发送的信号了 。
传了 SYN,为啥还要传 ACK
双方通信无误必须是两者互相发送信息都无误 。传了 SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要 ACK 信号来进行验证 。
搞定计算机网络面试 , 看这篇就够了(一)
断开一个 TCP 连接则需要“四次挥手”:
为什么要四次挥手
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态 。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接 。
举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了” , B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了” , A 回答“知道了”,这样通话才算结束 。
搞定计算机网络面试,看这篇就够了(一)
UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后 , 不需要给出任何确认 。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等
TCP 提供面向连接的服务 。在传送数据之前必须先建立连接,数据传送结束后要释放连接 。TCP 不提供广播或多播服务 。由于 TCP 要提供可靠的,面向连接的运输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接 , 而且在数据传递时,有确认、窗口、重传、拥塞控制机制 , 在数据传完后,还会断开连接用来节约系统资源) , 这一难以避免增加了许多开销,如确认,流量控制 , 计时器以及连接管理等 。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源 。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景 。
【计算机网络应用基础知识,弱电人看这篇就够了】