网络基础(一)

网络发展:

独立模式->网络互联->局域网LAN->广域网LAN
独立模式:计算机之间相互独立, 各司其职
网络互连:多台计算机连接到一台服务器上, 完成数据共享, 业务自由切换.
局域网LAN:通过交换机和路由器连接较多计算机
广域网LAN:较大的局域网LAN, 将更多的和更远的计算机连接起来.

网络协议:

网络协议:是网络通讯过程中的一种数据格式的约定.
通信协议标准:是网络互联的前提.
协议分层:
协议分层就是对各种协议的封装, 对每层的服务, 接口, 协议进行明确的划分.实现起来相对独立和方便.
比如说打电话, 在语言层,和通信设备层进行了封装. 通信双方必须必须在各个分层上都具有相互识别的约定, 这就是一个协议.
OSI七层模型:
物理层, 链路层, 网络层, 传输层, 会话层, 表示层, 应用层.
优点: 将服务, 接口, 协议三个概念明确区分开来: 服务说明了某层为上层提供了什么功能; 接口说明了某层如何使用下层的服务; 协议说明了如何实现本层的服务. 各层独立性强.
TCP/IP五层模型:
1.物理层:负责光电信号的传输
Ethernet, 集线器(信号放大)
2.链路层:负责相邻设备节点间的数据传输
Ethernet(以太网协议), 交换机
3.网络层:负责地址管理和路由选择
IP(互联网协议地址), 路由器(由路由表选择发送路径)
4.传输层:负责端与端之间的数据传输
TCP(传输控制协议), UDP(用户数据报协议)
5.应用层(表示层, 会话层): 负责应用程序间的数据沟通
http/https(超文本传输(安全)协议), FTP(文件传输协议), ssh(安全外壳协议), SMTP(电子邮件协议).
网络基础(一)
对于一台主机:它的操作系统内核实现了从传输层到物理层的内容
对于一台路由器: 它实现了从网络层到物理层的内容
对于一台交换机: 它实现了从数据链路层到物理层的内容
对于集线器: 它实现了物理层.
详情参考:TCP/IP四层模型和OSI七层模型的概念

网络传输基本流程:

各层主要协议:
网络基础(一)
HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol), 是用于从WWW服务器传输超文本到本地浏览器的传输协议.
HTTPS:超文本传输安全协议( Hypertext Transfer Protocol Secure), HTTP下加入SSL(安全套接层)协议, 在传输层进行加密.
SMTP:简单邮件传输协议(Simple Mail Transfer Protocol)
TELNET:远程终端协议, 是Internet远程登录服务的标准协议和主要方式.
FTP:文件传输协议(File Transfer Protocol)
TFTP:简单文件传输协议(Trivial File Transfer Protocol)
DNS:域名解析服务(Domain Name Service)

TCP:传输控制协议(Transmission Control Protocol)
UDP:用户数据报协议(User Datagram Protocol)

IP:互联网协议地址(Internet Protocol Address), 分配给用户上网使用的地址协议, 有IPV4和IPV6
ARP:地址解析协议(Address Resolution Protocol), 根据IP地址获取物理地址的一个TCP/IP协议.
RARP: 反向地址专函协议(Reverse Address Resolution Protocol), 允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址
ICMP:控制报文协议(Internet Control Message Protocol), 用于在IP主机、路由器之间传递控制消息; 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息.
IGMP:Internet组管理协议(Internet Group Management Protocol), 用于主机和多播路由器的请求和探询.

同一网段的两台计算机的通讯过程:
网络基础(一)
不同网段的两台计算机通讯过程:
网络基础(一)
两个主机不再同一局域网内, 若想相互沟通, 就需要通过路由器来作为中转站.
客户端发送数据时, 经过自顶向下的封装过程得知目标主机不在同一局域网内, 于是先将数据发送到路由器, 然后经过路由表的解析从而得到目标主机的IP地址, 然后数据会发送到目标主机的局域网内, 因为在该局域网内的所有主机都有可能接收到数据, 因此还需要进一步解析让指定主机相应.
数据包封装和分用:
数据包封装:
网络基础(一)
数据包分用:
网络基础(一)

网络中的地址管理

1. IP地址:唯一标识(定位)网络上的一台主机
特性:
IPV4: uint32_t的数字, IPV6: uchar ip[16] (因为不向上兼容IPV4, 所以没有得到推广)
解决IP地址不够用的问题:
DHCP: 动态地址分配技术 —> 谁上网给谁分配地址
NAT: 地址替换 —> 实现多人使用同一地址上网
每条数据中都会包含:
src ip dest ip — 标识这条数据的来源和去处
////////////////////////////////////////////////////////////////////////////////////////////
2. 端口(抽象):标示一台主机上进程网络通信的进程
特性:
uint16_t的数字(0-65535)
一个端口只能被一个进程占用; 但是一个进程可以使用多个端口(1-1024不推荐使用, 因为已经使用或预留).
不用pid标识的原因: pid会改变.
网络程序分为客户端和服务端:
主动发送请求的是客户端, 被动在指定位置接收请求的是服务端.
每条数据中都会包含:
src port dest port — 标识了这个数据的来源进程和发送进程
/////////////////////////////////////////////////////////////////////////////////////////////////
每条数据中都会包含: sip sport dip dport proto (五元组—标识一条通信)

3. 字节序: cpu在内存中对数据进行存取的顺序
(为了让不同字节序的主机进行正常的网络通信所以规定了字节序)
主机字节序: 当前计算机字节序(取决于cpu架构)
x86_64:小端 MIPS:大端
网络字节序:大端字节序(操作内存中数据的顺序)
字节序不同的主机进行通信:
通讯主机字节序不同, 数据二义性(针对存储大于1个字节的数据—char不会):
因为在内存中的存储跟展示的刚好顺序相反.
解决: 订立标准, 通信双方都使用网络字节序(大端字节序)
判断主机大小端的两种方式:
网络基础(一)
网络基础(一)
网络基础(一)
MAC地址:
标识世界上唯一一台主机, 仅在局域网内有限.
对于MAC地址,由于我们不直接和它接触,所以大家不一定很熟悉。在OSI(Open System Interconnection,开放系统互连)7层网络协议(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)参考模型中,第二层为数据链路层(Data Link),它包含两个子层,上一层是逻辑链路控制(LLC:Logical Link Control),下一层即是我们前面所提到的MAC(MediaAccess Control)层,即介质访问控制层。所谓介质(Media),是指传输信号所通过的多种物理环境。常用网络介质包括电缆(如:双绞线,同轴电缆,光纤),还有微波、激光、红外线等,有时也称介质为物理介质。MAC地址也叫物理地址硬件地址链路地址,由网络设备制造商生产时写在硬件内部。这个地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到网络的何处,它都有相同的MAC地址,MAC地址一般不可改变,不能由用户自己设定。