文章目录
由于不同机器上的程序要通信,才产生了网络
基础知识
基本架构
- 应用类:qq、微信、网盘…(安装应用)
- web类:百度、知乎、博客园…(浏览器访问)
C/S架构
- 服务端(server):一直运行,等待请求
- 客户端(client):需要使用时,发送请求
B/S架构
基于浏览器(broser)。这是一个大的趋势(小程序、公众号),实际上就是统一入口。
- B/S架构实际上也是一种C/S架构。
物理相关知识
局域网内通信
当两台计算机要进行通信,用网线连接两台计算机。网线是接通计算机的网卡,网卡上有 全球唯一的 mac地址。
(局域网内)当多台计算机要通信时,所有的计算机可以都用一条网线接到交换机上。
-
通过ip地址,利用ARP协议找到对应的mac地址,进行连接传输。
地址解析协议,即ARP(数据链路层协议),是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;
由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
广域网通信
通过路由器将多个局域网接通起来,而每个局域网都有一个统一的出口(网关)。
通过ip地址 和 子网掩码 按位与 得出本网段(可用于判断是否同为同一个网段)。
子网掩码:255.255.255.0
ip地址:192.168.13.253
按位与:192.168.13.0
软件应用相关
- 服务使用 TCP或UDP的端口侦听客户端请求
- 客户端使用IP地址定位服务器 使用端口 定位服务
- 可以在服务器网卡上设置只开放必要的端口,实现服务器的网络安全
网络层
网络层向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网际协议IP
网际协议IP是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网标准协议之一。
- ARP协议在下,因为IP经常要使用它(PARP已淘汰)
- ICMP、IGMP在上,它们要使用IP协议
ip分类
IP数据报的格式
主要分为两部分
- 固定长度 (20字节)
- 可选字节
各字段
-
版本 4位 广泛使用ipv4、ipv6
-
首部长度 4位,而4位二进制数最大十进制是15,但固定长度是20字节。则将1乘4,所以此字段的最小值是5,最大值是60.若首部长度不是4的倍数时,利用最后的填充字段加以填充。
-
区分服务 一般不使用
-
总长度 指首部和数据之和,单位为字节。16位则最大长度位65535字节(很少这么长)
-
标识 16位。(并不是序号)因为ip是无连接服务,数据报不存在按序接收的问题。当数据报过长必须进行分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段值使分片后的各数据报片最后能正确地重装成为原来的数据报。
-
标志 3位 目前只有两位有意义。MF(more fragment)=1表示还有分片,MF=0表示已经是最后一个。DF(don`t fragment)=0表示允许分片
-
片偏移 占13位,在分片后,某片在原分组中的相对位置。以8个字节为单位,即分片长度一定是8字节的整数倍。(规定分片长度不超过1420字节)
分片一:标识:777,MF=1,DF=0,片偏移=0
分片二:标识:777,MF=1,DF=0,片偏移=175
分片三:标识:777,MF=0,DF=0,片偏移350 -
生存时间 8位 TTL(time to live)。防止无法交付的数据报无限制的在互联网。每跳一个路由器减一,当为0时,路由器丢弃该数据报。
-
协议 8位。指出此数据报携带的数据是使用何种协议,以便知道该上交给哪个协议进行处理。
协议名 | ICMP | IGMP | IP(ip数据报再封装ip数据报) | TCP | UDP | IPv6 |
---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 4 | 6 | 17 | 41 |
- 首部检验和 16位。只检验数据报首部。二进制反码求和。
- 源地址 32位
- 目的地址 32位
分组转发
- 从数据报首部提取目的主机的IP地址,得出网络地址
- 若再同网段则直接交付(包括把目的地址转化位硬件地址)
- 若路由表中有目的地址的特定主机路由(特定指明的),则指明下一跳
- 若路由表有到达目的网络的路由,则指明下一跳
- 若有默认路由则发送给默认路由
- 报告转发分组出错
注:路由表中并不是指明到达某网络的完整路径,而只是下一跳路径。
运输层
端口
接通两台计算机后,需要确定与哪个应用程序进行通信。而每一个需要网络通信的程序都会在本机上开一个端口。(同一时间同一台计算机,一个端口只被一个程序占用。)
单个计算机中进程是用进程标识符来标志的。但在互联网环境下,不同的计算机可能使用不同的操作系统,不同的操作系统又使用不同格式的进程标识符。
为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标志。
解决这个问题的方法就是在运输层使用协议端口号。
端口号范围:0-65535
- 0~1023是系统端口号。指派给了TCP/IP最重要的一些应用程序
- 1024~49151是登记端口号。是为没有熟知端口号的应用程序使用的。这类端口号必须在IANA按照规定登记,以防止重复。
- 49152~65535是客户端使用的端口号,又叫做短暂端口号。这类端口号留给客户进程选择暂时使用。当通信结束后,客户端已使用过的端口号就不复存在了。
常见端口号
端口 | 协议 |
---|---|
53 | DNS域名系统协议 |
80 | 超文本传输协议(HTTP) |
443 | 安全超文本传输协议(HTTPS) |
21 | FTP文件传输协议 |
22 | 安全外壳协议(SSH) |
53(UDP)< |