CS-Notes/docs/notes/计算机网络 - 概述.md
2019-10-24 02:09:52 +08:00

144 lines
8.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- GFM-TOC -->
* [网络的网络](#网络的网络)
* [ISP](#isp)
* [主机之间的通信方式](#主机之间的通信方式)
* [电路交换与分组交换](#电路交换与分组交换)
* [1. 电路交换](#1-电路交换)
* [2. 分组交换](#2-分组交换)
* [时延](#时延)
* [1. 排队时延](#1-排队时延)
* [2. 处理时延](#2-处理时延)
* [3. 传输时延](#3-传输时延)
* [4. 传播时延](#4-传播时延)
* [计算机网络体系结构](#计算机网络体系结构)
* [1. 五层协议](#1-五层协议)
* [2. OSI](#2-osi)
* [3. TCP/IP](#3-tcpip)
* [4. 数据在各层之间的传递过程](#4-数据在各层之间的传递过程)
<!-- GFM-TOC -->
# 网络的网络
网络把主机连接起来而互联网是把多种不同的网络连接起来因此互联网是网络的网络
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/network-of-networks.gif" width="450"/> </div><br>
# ISP
互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址同时拥有通信线路以及路由器等联网设备个人或机构向 ISP 缴纳一定的费用就可以接入互联网
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/72be01cd-41ae-45f7-99b9-a8d284e44dd4.png" width="500"/> </div><br>
目前的互联网是一种多层次 ISP 结构ISP 根据覆盖面积的大小分为第一层 ISP区域 ISP 和接入 ISP互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/3be42601-9d33-4d29-8358-a9d16453af93.png" width="500"/> </div><br>
# 主机之间的通信方式
- 客户-服务器C/S客户是服务的请求方服务器是服务的提供方
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/914894c2-0bc4-46b5-bef9-0316a69ef521.jpg" width="240px"> </div><br>
- 对等P2P不区分客户和服务器
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/42430e94-3137-48c0-bdb6-3cebaf9102e3.jpg" width="200px"> </div><br>
# 电路交换与分组交换
## 1. 电路交换
电路交换用于电话通信系统两个用户要通信之前需要建立一条专用的物理链路并且在整个通信过程中始终占用该链路由于通信的过程中不可能一直在使用传输线路因此电路交换对线路的利用率很低往往不到 10%
## 2. 分组交换
每个分组都有首部和尾部包含了源地址和目的地址等控制信息在同一个传输线路上同时传输多个分组互相不会影响因此在同一条传输线路上允许同时传输多个分组也就是说分组交换不需要占用传输线路
在一个邮局通信系统中邮局收到一份邮件之后先存储下来然后把相同目的地的邮件一起转发到下一个目的地这个过程就是存储转发过程分组交换也使用了存储转发过程
# 时延
总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/4b2ae78c-e254-44df-9e37-578e2f2bef52.jpg" width="380"/> </div><br>
## 1. 排队时延
分组在路由器的输入队列和输出队列中排队等待的时间取决于网络当前的通信量
## 2. 处理时延
主机或路由器收到分组时进行处理所需要的时间例如分析首部从分组中提取数据进行差错检验或查找适当的路由等
## 3. 传输时延
主机或路由器传输数据帧所需要的时间
<!-- <div align="center"><img src="https://latex.codecogs.com/gif.latex?delay=\frac{l(bit)}{v(bit/s)}" class="mathjax-pic"/></div> <br> -->
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/dcdbb96c-9077-4121-aeb8-743e54ac02a4.png" width="150px"> </div><br>
其中 l 表示数据帧的长度v 表示传输速率
## 4. 传播时延
电磁波在信道中传播所需要花费的时间电磁波传播的速度接近光速
<!-- <div align="center"><img src="https://latex.codecogs.com/gif.latex?delay=\frac{l(m)}{v(m/s)}" class="mathjax-pic"/></div> <br> -->
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/a1616dac-0e12-40b2-827d-9e3f7f0b940d.png" width="150"> </div><br>
其中 l 表示信道长度v 表示电磁波在信道上的传播速度
# 计算机网络体系结构
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/0fa6c237-a909-4e2a-a771-2c5485cd8ce0.png" width="450"/> </div><br>
## 1. 五层协议
- **应用层** 为特定应用程序提供数据传输服务例如 HTTPDNS 等协议数据单位为报文
- **传输层** 为进程提供通用数据传输服务由于应用层协议很多定义通用的传输层协议就可以支持不断增多的应用层协议运输层包括两种协议传输控制协议 TCP提供面向连接可靠的数据传输服务数据单位为报文段用户数据报协议 UDP提供无连接尽最大努力的数据传输服务数据单位为用户数据报TCP 主要提供完整性服务UDP 主要提供及时性服务
- **网络层** 为主机提供数据传输服务而传输层协议是为主机中的进程提供数据传输服务网络层把传输层传递下来的报文段或者用户数据报封装成分组
- **数据链路层** 网络层针对的还是主机之间的数据传输服务而主机之间可以有很多链路链路层协议就是为同一链路的主机提供数据传输服务数据链路层把网络层传下来的分组封装成帧
- **物理层** 考虑的是怎样在传输媒体上传输数据比特流而不是指具体的传输媒体物理层的作用是尽可能屏蔽传输媒体和通信手段的差异使数据链路层感觉不到这些差异
## 2. OSI
其中表示层和会话层用途如下
- **表示层** 数据压缩加密以及数据描述这使得应用程序不必关心在各台主机中数据内部格式不同的问题
- **会话层** 建立及管理会话
五层协议没有表示层和会话层而是将这些功能留给应用程序开发者处理
## 3. TCP/IP
它只有四层相当于五层协议中数据链路层和物理层合并为网络接口层
TCP/IP 体系结构不严格遵循 OSI 分层概念应用层可能会直接使用 IP 层或者网络接口层
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/48d79be8-085b-4862-8a9d-18402eb93b31.png" width="250"/> </div><br>
## 4. 数据在各层之间的传递过程
在向下的过程中需要添加下层协议所需要的首部或者尾部而在向上的过程中不断拆开首部和尾部
路由器只有下面三层协议因为路由器位于网络核心中不需要为进程或者应用程序提供服务因此也就不需要传输层和应用层
# 微信公众号
更多精彩内容将发布在微信公众号 CyC2018 你也可以在公众号后台和我交流学习和求职相关的问题另外公众号提供了该项目的 PDF 等离线阅读版本后台回复 "下载" 即可领取公众号也提供了一份技术面试复习大纲不仅系统整理了面试知识点而且标注了各个知识点的重要程度从而帮你理清多而杂的面试知识点后台回复 "大纲" 即可领取我基本是按照这个大纲来进行复习的对我拿到了 BAT 头条等 Offer 起到很大的帮助你们完全可以和我一样根据大纲上列的知识点来进行复习就不用看很多不重要的内容也可以知道哪些内容很重要从而多安排一些复习时间
<div align="center"><img width="350px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码.png"></img></div>