计算机网络
网络基础知识
http协议
Web 使用一种名为 HTTP(超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。可以说,Web 是建立在 HTTP 协议上通 信的。
TCP/ IP协议
TCP/IP 是互联网相关的各类协议族的总称
通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作 的。而 HTTP 属于它内部的一个子集。
分层原理
- 应用层
应用层决定了向用户提供应用服务时通信的活动。
比如:
- FTP(File Transfer Protocol,文件传输协议
- DNS(Domain Name System,域 名系统)
- HTTP 协议也处于该层。 - 表示层
设置固有格式和网络标准数据格式的转换 - 会话层
- 通信管理,负责建立和断开通信连接
- 管理传输层以下的分层
- 传输层
起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。
比如:
- TCP(Transmission Control Protocol,传输控制协议)
- UDP(User Data Protocol,用户数据报协议) - 网络层
负责寻址和路由选择。
目标地址可以是多个网络通过路由器连接而成的某一个地址。
比如:
- IP协议(Internet Protocol)网际协议 - 链路层
负责物理层面上互连的、节点之间的通信传输。例如与1个以太网相连的2个节点之间的通信。 - 物理层
负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。
TCP/IP 通信传输流(以发送 http 请求举例)
会话层以上的处理
会话层以上的部分会对何时建立连接、何时发送数据等问题进行管理,并不具有实际传输数据的功能
- 客户端应用层:
- 为应用程序提供服务并规定应用程序中通信相关的细节。
- 比如通过 DNS 获取域名对应的 IP
- 并且HTTP 协议发出一个想查看某个 Web 页面的请求
- 客户端表示层
- 决定了将数据转换为网络标准传输格式
- 比如将中文转化为 UTF-8 编码格式
- 在服务器端则是将这些网络标准格式的数据恢复为“该计算机特定的数据格式”
- 客户端会话层
- 决定采用何种连接方法是会话层的主要责任
- 比如建立一条连接发送所有信息;每发一次建立一条连接;同时建立多条连接同时发送多条信息
- 会话层只负责决定建立连接和断开连接的时机,而传输层进行实际的建立和断开处理。
传输层以下的处理
真正负责在网络上传输具体数据的是会话层以下的“无名英雄”
- 客户端传输层:
- TCP协议将HTTP请求报文分割,并在各个报文上打上标记序号和端口号
- 三次握手确定传输成功
- 客户端网络层:
- IP协议将数据包发送给对方
- ARP 协议负责获取 MAC 地址,若解析不到 MAC 地址则发给下一个中转站(路由器),让下一个路由器来搜索 MAC 地址
- 链路层:
- 数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。
- 网络层与链路层都是基于 MAC 地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终目标地址,而链路层则只负责发送一个分段的数据。
- 物理层:
- 物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用 MAC 地址实现传输。
IP 地址、MAC 地址和 ARP 协议
IP 协议的作用是把各种数据包传送给对方。
- IP 地址指明了节点被分配到的地址(可变的)
- MAC 地址是指网卡所属的固定地址(基本上不变)
- ARP 在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映射表经常动态更新。每一台主机都设有一个 ARP 高速缓存(ARP Cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表(并且每一个映射地址都设置有生存时间)
过程:
- 发送端只知道接收端的IP地址,发给路由器1
- 路由器1使用 ARP 解析IP发现该 MAC 不在局域网中,发给下一个路由器2
···· - 路由器n使用 ARP 解析IP地址发现该 MAC 地址在局域网中,发送给接收方
TCP协议三次握手
TCP 位于传输层,用于提供可靠的字节流服务
- 字节流服务
为了方便传输,将大 块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。
总之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。 - 三次握手
- 发送端首先发送一个带 SYN 标志的数据包给对方
- 接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息
- 最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。
DNS服务
DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的 协议。它提供域名到 IP 地址之间的解析服务。
过程:
- 发送端发送域名给DNS服务器
- DNS服务器将域名对应到IP地址上,并将IP地址给发送端
- 发送端再向该IP地址发送访问请求
传输方式
面向有连接与面向无连接
- 面向有连接
面向有连接型,会在发送数据之前与服务器建立一条通信线路,必须要建立连接才能发送数据
在通信前会建立连接,在通信后会断开连接 - 面向无连接
无需建立连接,发送端可以自由发送数据。接收端由于不知道什么时候会收到数据,所以要确认是否收到了数据
因此即使接收端不存在或无法接收数据,发送端也能发送数据
电路交换和分组交换
URI 和 URL
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lilming的编程方舟!
评论
ValineDisqus