ARP
ARP概述及工作原理
Address Resolution Protocol 地址解析协议
作用:把IP地址解析为MAC地址,知道IP求MAC
数据在以太链路上以以太网帧的形式传输,要在以太网中传输IP数据包,必须知道IP对应的MAC地址
1、查看ARP表。如果ARP表中没有目标主机对应的表项,则发送ARP请求,ARP请求的目标MAC是全F的广播地址
2、同一个广播域中的所有主机都能收到ARP请求,只有被请求的主机才会发送ARP应答,ARP应答的目标MAC是请求主机的MAC-单播
3、ARP应答
4、ARP表存储收到的arp应答中的IP-MAC映射信息ARP缓存失效时间300S,不同操作系统略有不同
ARP缓存
动态表项› 通过ARP协议学习,能被更新,缺省老化时间120s
静态表项› 手工配置,不能被更新,无老化时间的限制
ARP报文
免费ARP概述及案例
免费ARP GratuitousARP,是广播报文
GratuitousARP中的报文,它的源目标的IP是一样的,目的是为了再次确认网络中的身份
我们的PC,开机或者更改了IP地址,会发送免费ARP
›发送ARP请求,其中TargetIP是自己的IP
›确定其它设备的IP地址是否与本机IP地址冲突。
›更改了地址,通知其他设备更新ARP表项
IP地址发生冲突的条件
•收到GratuitousARP报文,且Sender/TargetIP与当前IP一致,但SenderMAC与当前MAC不同
代理ARP概述及案例
Proxyarp是为了分割网络,同时又不想划分网段,中间加设一个路由设备并开启arp代理功能,就能通过router代为回应双方的arp请求和应答。
由启动了代理ARP功能的网关/下一跳设备代为应答ARP请求,该ARP请求的是其他IP对应的MAC地址回应ARP请求的条件:
- 本地有去往目的IP的路由表
- 收到该ARP请求的接口与路由表下一跳不是同一个接口
RARP
ReverseAddressResolutionProtocol反向地址解析协议
•把MAC地址解析为IP地址
•用于无盘工作站
TCP与UDP
TCP
TCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。
TCP报文结构

源端口:标识发送方的应用进程。 目的端口:标识接收方的应用进程。
序号:保证数据传输的有序性。 确认号:对收到的数据进行确认。
Flag字段(8位)
ACK‒
确认号标志,置1表示确认号有效,表示收到对端的特定数据
RST‒
复位标志,置1表示拒绝错误和非法的数据包,复位错误的连接
SYN‒
同步序号标志,置1表示同步序号,用来建立连接
FIN‒
结束标志,置1表示连接将被断开,用于拆除连接
Option字段(可选项)MSS最大报文段长度,通过置位,协商能承载的TCP数据的大小
源端口随机分配,目标端口使用知名端口(Well-knownport);
应用客户端使用的源端口号一般为系统中未使用的且大于1023;
目的端口号为服务端开启的服务所侦听的端口,如HTTP缺省使用80。
传输机制—TCP三次握手
传输机制—TCP四次挥手

面向字节流
流量控制—滑动窗口机制
可靠传输—停止等待协议
拥塞控制
RST标志位
-RST标志位作用:用于复位因某种原因导致的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误
-RST可能被接收方或者中间设备置位
-RST置位的原因
‒服务器端口没有打开(listen)
‒服务器响应太慢,用户终止连接
‒网络攻击
‒其他
UDP
UDP是UserDatagramProtocol的简称,中文名是用户数据报协议,是OSI(OpenSystemInterconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC768是UDP的正式规范。UDP在IP报文的协议号是17。
UDP报文结构
UDP协议特点
1.因为UDP是无连接的。在传输数据之前,不需要进行复杂的三次握手来建立连接。
2.在传输数据时,没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。
3.传输结束后,也不用再用四次握手握手来结束连接。
对比
TCP适用场景:
当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常的时候。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。
TCP一般用于文件传输(FTPHTTP对数据准确性要求高,速度可以相对慢),发送或接收邮件(POPIMAPSMTP对数据准确性要求高,非紧急应用),远程登录(TELNETSSH对数据准确性有一定要求,有连接的概念)等等
UDP适用场景:
1.在 高效可靠的网络环境中(不需要考虑网络不好导致的丢包、乱序、延时、重复等问题),因为UDP是无连接的服务,不用消耗不必要的网络资源(TCP中的协议间通信)和处理时间(预期确认需要的时间),从而效率要高的多。
2.在 轻权通信中,当需要传输的数据量很小(可以装在一个IP数据包内)时。如果我们使用TCP协议,那么,先建立连接,一共需要发送3个IP数据包,然后数据传输,1个IP数据包,产生一个确认信号的IP包,然后关闭连接,需要传输5个IP数据包。使用TCP协议IP包的利用率为1/10。而使用UDP,只需要发送一个IP数据包。哪怕丢包(服务不成功),也可重新申请服务(重传)。UDP很适合这种客户机向服务器传送简单服务请求的环境。此类应用层协议包括TFTP,SNMP,DNS,DHCP等。
3.在 对实时性要求很强的通信中:在诸如实时视频直播等对实时性要求很高的环境中,从而允许一定量的丢包的情况下(直播比赛,前面丢失的包,重传出来已经意义不大了),UDP更适合。(可以根据具体需要通过应用层协议提供可靠性,不用像TCP那么严格。)
DNS
DNS产生过程

DNS(Domain Name System,域名系统)是互联网上是一种层次结构的基于域的命名方式和实现这种命名方式的分布式数据库,其中记录了各种主机域名与IP地址的对应关系,能够使用户更加方便的访问网站。用户可以直接输入域名登录网站,DNS会将域名解析成IP地址,然后用户根据这个IP地址找到相应的网站,从而访问到域名对应的网站,通过主机名获取到主机名对应IP地址的过程叫作域名解析。
DNS协议建立在UDP协议之上,在某些情况下可以切换到TCP,使用端口号53,是一种客户/服务器服务模式。
DNS概述
域:
•域是一个逻辑上的概念,在初始瓜分互联网的时候,Internet组织将世界上的计算机划分为了若干个大类,如com、gov、org、net、edu、cn、us等等
•每一个大类我们称之为一个域
•在每个大类里面划分出比较小一点的,成为子域,域是可以嵌套的,大域包含小域,小域可以包含更小的域域名:
•在每个域里面都有很多主机,每个主机都有一个主机名,我们在这个主机名后面冠上主机所在域的名称成为该主机在Internet网络上的域名。
域名结构:域名是一个树状层次结果,联机分布式数据库系统,最高的根域名服务器维护最高级别域名服务器记录,后者维护下一级域名服务器的记录
域名服务器:负责名字到地址的解析。
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
根据域名结果可以把域名服务器划分为以下四种类型:
(1)根域名服务器;
(2)顶级域名服务器;
(3)权威域名服务器;
(4)本地域名服务器。
每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为zone(区域)
如果根据DNS服务器管理的区域地址数据的来源不同,DNS系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下
•主域名服务器:维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。
•从域名服务器:与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
•缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
DNS工作原理
DNS查询以各种不同的方式进行解析,客户机可通过使用从以前查询获得的缓存信息就地应答查询,DNS服务器也可使用其自身的资源记录信息缓存来应答查询。但更多是使用下列两种方式:
•递归解析
DNS服务器收到一个域名解析请求时,如果所要检索的资源记录不在本地,DNS服务器将和自己的上一层服务器交互,获得最终的答案,并将其返回给客户
•迭代解析
DNS服务器收到解析请求,首先在本地的数据库中查找是否有相应的资源记录,如果没有,则向客户提供另外一个DNS服务器的地址,客户负责把解析请求发送给新的DNS服务器地址

DNS常见的记录及作用
域名和IP之间的对应关系,称为“记录”(record)。根据记录使用的目的不同,又分为不同的类型,常见的DNS记录类型如下:
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;
A:地址记录(Address),返回域名指向的IP地址。
NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。
SOA记录:
name:当前区域的名字,例如“sangfor.com.”;
value:有多部分组成
(1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2)录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如admin.sangfor.com;
(3) (主从服务协调属性的定义以及否定的答案的统一的TTL)
例如:sangfor.com. 86400 IN SOA ns.sangfor.com. nsadmin.sangfor.com. (2020032201 ;序列号2H ;刷新时间10M ;重试时间1W ;过期时间1D ;否定答案的TTL值)
A记录:
name:某主机的FQDN,例如www.sangfor.com.
value:主机名对应主机的IP地址;
例如:
www.sangfor.com. IN A 1.1.1.2
mx1.sangfor.com. IN A 1.1.1.3
mx2.sangfor.com. IN A 1.1.1.3
注意:
*.sangfor.com. IN A 1.1.1.4
Sangfor.com. IN A 1.1.1.4
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;
NS记录:
name:当前区域的名字
value:当前区域的某DNS服务器的名字,例如ns.sangfor.com.;
注意:
一个区域可以有多个NS记录;
例如:
sangfor.com. IN NS ns1.sangfor.com.
sangfor.com. IN NS ns2.sangfor.com.
注意:
(1)相邻的两个资源记录的name相同时,后续的可省略;
(2)对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录;
MX记录:
name:当前区域的名字
value:当前区域的某邮件服务器(smtp服务器)的主机名;
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高;
例如:
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
注意:
(1)对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录;
CNAME记录:
name:别名的FQDN
value:正工名字的FQDN;
例如:
web.sangfor.com. IN CNAME www.sangfor.c
PTR记录:
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.sangfor.com
简写成:
4 IN PTR www.sangfor.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写
HTTP及HTTPS协议
HTTP
万维网(www)
•Http是一种网络协议,也是互联网上应用最为广泛的一种,http也叫超文本传输协议,所有的html文件都是遵循这个标准进行传输的。
•HTTP的出现是为了提供一种发布和接收HTML页面的办法。
HTTP(HypertextTransferProtocol)中文“超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。
功能:用于在服务器和客户机之间传输超文本文件
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。如:

HTTPS
传统的很多网站都是基于HTTP协议的。HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是设计了SSL(SecureSocketsLayer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
HTTPS和HTTP的区别
HTTPS架构
HTTPS工作原理
SSL加密
•密码:对文本进行编码
•密钥:改变密码行为的数字化参数
•对称密钥加密系统:编/解码使用相同密钥的算法
•非对称密钥加密系统:编/解码使用不同密钥的算法
•数字签名:用来验证报文未被伪造或篡改的校验和
•数字证书:由一个可信的组织验证和签发的识别信息
HTTPS在传输数据。握手过程的简单描述如下:
1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:
a)验证证书的合法性
b)生成一串随机数的密码,并用证书中提供的公钥加密。
c)使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
a)使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b)使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
DHCP协议
•减少错误
通过配置DHCP,把手工配置IP地址所导致的错误减少到最低程度,例如已分配的IP地址再次分配给另一设备所造成的地址冲突等将大大减少。
•减少网络管理
1、TCP/IP配置是集中化和自动完成的,不需要网络管理员手工配置。网络管理员能集中定义全局和特定子网的TCP/IP配置信息。
2、使用DHCP选项可以自动给客户机分配全部范围的附加TCP/IP配置值。客户机配置的地址变化必须经常更新,比如远程访问客户机经常到处移动,这样便于它在新的地点重新启动时,高效而又自动地进行配置。
3、同时大部分路由器能转发DHCP配置请求,这就减少了在每个子网设置DHCP服务器的必要,除非有其它原因要这样做。
DHCP是Bootstrap协议的一种扩展,基于UDP协议,客户端的端口号是68,服务端的端口号是67
DHCP协议特性
1、保证任何IP地址在同一时刻只能由一台DHCP客户机所使用
2、DHCP应当可以给用户分配永久固定的IP地址
3、DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
4、DHCP服务器应当向现有的DHCP客户端提供服务
DHCP报文
工作流程
- DHCP(DynamicHostConfigurationProtocol)是一种动态的向Internet终端提供配置参数的协议。在终端提出申请之后,DHCP服务端可以向终端提供IP地址、网关、DNS服务器地址等参数。

- 客户机在本网段内广播DHCPDISCOVER报文已发现网络中的DHCP服务器
- 服务器向客户机回应请求,并给出一个可用的IP地址。但在给出此地之前,应当用ICMPECHOREQUEST报文进行检查,检查是否有其他机器配置此IP地址

- 如果收到多个DHCPOFFER报文,DHCP客户机会根据报文的内容从其中选择一个给与响应。如果客户机之前曾经获得过一个IP地址,它会将此地址写在DHCPREQUEST报文的OPTIONS域的“REQUESTDIPADDRESS”中发给服务器。
- 当收到DHCPREQUEST报文后,服务器将客户机的网络的(网络地址,硬件地址)同分配的IP地址绑定,在将IP地址发送给客户机。

- 当收到DHCPREQUEST报文后,如果发现其申请的地址无法被分配,则用DHCPNAK报文回应(已被使用)
- 客户机收到DHCPACK报文后,再对所有的参数进行一次最后的检查,如果发现由地址冲突存在,则使用DHCPDECLINE报文回复服务器
- 如果客户机放弃现在使用的IP地址,则她使用DHCPRELEASE报文通知服务器,服务器将此地址回收以备下次使用
DHCP中继
考虑到成本,无需每个子网都配备一台DHCP服务器,所以DHCP协议应当可以通过路由器或者BOOTP代理透传(DHCP中继)。
•由于DHCP请求报文采用广播方式发送报文,因此当DHCP客户端和DHCP服务器处于不同子网时,必须要通过DHCP中继进行通信,最终获取到IP地址。
•多个网络上的DHCP客户端可以使用同一个DHCP服务器,既节省了成本,又便于进行集中管理。DHCP Snooping
DHCPSnooping是DHCP的一种安全特性,主要应用在交换机上,作用是屏蔽接入网络中的非法的DHCP服务器。即开启DHCPSnooping功能后,网络中的客户端只有从管理员指定的DHCP服务器获取IP地址。
DHCP在设计上未从分考虑安全因素,从而留下了许多安全漏洞,使得DHCP很容易受到攻击。实际网络中,针对DHCP的攻击行为主要有以下三种:
•DHCP饿死攻击
•仿冒DHCPServer攻击
•DHCP中间人攻击
FTP协议
为了提高文件的共享性,在本地主机和远程主机之间高效传送数据。FTP协议被广泛使用在互联网上的文件传输。
客户端/服务器模式,基于TCPFTP采用双TCP连接方式
控制连接使用TCP端口号21
数据连接使用TCP端口号20
FTP有两种文件传输模式
ASCII模式
二进制流模式
FTP采用两种数据传输方式
主动方式(PORT)
主动模式工作过程
被动方式(PASV)

FTP主动和被动模式总结
•主动模式对FTP服务器的管理有利,但对客户端的管理不利。
•因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
•被动模式对FTP客户端的管理有利,但对服务器端的管理不利。
•因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
邮件协议
smtp协议
pop3协议
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
imap协议
MAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。
邮件协议imap和pop3对比

IMAP整体上为用户带来更为便捷和可靠的体验。POP3更易丢失邮件或多次下载相同的邮件,但IMAP通过邮件客户端与webmail之间的双向同步功能很好地避免了这些问题。
发件过程
电子邮件发送协议是一种基于“推”的协议,主要包括SMTP;
邮件接收协议则是一种基于“拉”的协议,主要包括POP协议和IMAP协议,在正式介绍这些协议之前,我们先给出邮件收发的体系结构:




