计算机网络总结

1、TCP/IP 模型

计算机网络总结_第1张图片

2、TCP/IP各层的协议和接口

计算机网络总结_第2张图片

ARP的存在层是有争议性的,书上有说,它在网络层进行封装(在IP报头之后)一般在数据链路层进行广播寻求MAC地址时,才会触发它

3、各层基本概念
//物理层:
    该层为上层提供了一个传输数据的可靠的物理媒体,物理层确保了原始数据在各种物理媒体上传输

//数据链路层
数据链路层在不可靠的物理介质中提供可靠的传输。
在物理层提供的服务基础上向上级提供服务,最基本的服务是接收来自网络的数据块并将接收到数据块(帧)传递给上层。
这就要求数据链路层具备很多条件:如何建立网络连接、如何控制帧在数据链路层的传输。
该层作用:物理地址寻址,数据的检测、重发,流量控制

//网络层
实现两个端系统之间的数据透明传输
功能包括:逻辑寻址、路由选择、连接的建立、保持和终止
它提供的服务使传输层不需要了解底层的实现
IP协议:提供不可靠,无连接的传输。 功能:无连接数据报传输,数据报路由选择,差错控制。

//网络层只是根据网络地址将源节点发出的数据报传送到目的地的节点
//传输层则负责将数据可靠的传输到相对应的端口

//传输层
第一个端到端、主机到主机的层次。 传输层负责将上层数据分段并提供 端到端,可靠或不可靠的服务。在传输层也要处理端对端的差错控制与流量控制。
4、数据报传输详情

计算机网络总结_第3张图片

1、我们把自身数据在传输过程中额外的数据叫报头
2、每一层都有不同的功能,每一次都有不同的报头
3、层与层之间具有上下级关系,上层使用下层的接口收发数据,下层使用上层的接口交付数据(分用)
4、用户数据自顶向下增加报头为封装,自低向上为解报
5、当前层接收上层的信息都为数据,当前层并不关心内容,都会增加相对应报头
6、每层协议都要可以将数据与报头分离
         定长报头:报头长度固定
         自描述报头:在报头信息中包含报头长度
7、每层协议在忽略其底层的所有协议时,都会认为自己在与对方直接通信,发送的数据就是其接收的数据
8、不同层的协议不能识别
5、以太网协议报

计算机网络总结_第4张图片

1、源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出场时固化的。⽤ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。

2、帧协议类型字段有三种值,分别对应IP数据(上层交付的)、 ARP、 RARP。

3、帧校验码(CRC):32位的循环冗余校验码来进行差错效验,来检查帧数据是否被破坏
原理:
可采用多项式法:  假设你发送的数据为10010010
     可转换为R=x^7 +x^4 +x
双方达成协议,就可通过此方法来检验数据差错。

4、帧间距: 当一个帧发送出去之后,发送方在下次发送帧之前,需要再发送至少12个字节的空闲线路状态码。

5、以太网帧中的数据长度规定最小46 字节,最大1500 字节,当数据超过1500时,会分片操作,这个过程不会在数据链路层完成,因为以太网的报头中不包含其信息。ARP 和RARP 数据包的长度不够46 字节,要在后面补填充0
6、ARP协议(地址解析协议

计算机网络总结_第5张图片

1、注意到源MAC地址、目的MAC地址在以太网部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它网络类型则有可能是必要的。
2、帧类型: 如果是ARP报文,值为0x0806
3、硬件类型指链路层网络类型,1为以太网
4、协议类型指要转换的地址类型
5、op字段为1表示ARP请求,op字段为2表示ARP应答,3表示RARP请求包,4表示RARP应答包
6、命令arp -a查询ARP缓存表(存放mac地址)(缓存表是有时限的,一般是20分钟)


//原理:
假设   主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
      主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。

第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。

第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。
主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
//ARP欺骗

阻止目标的数据包通过网关
1>比如在一个局域网内通过网管上网,那么连接外部的计算机上的ARP缓存中就存在网管IP-MAC对应记录

2>如果,该记录被更改,那么该计算机向外发送的数据包总是发送到了错误的网关硬件地址上,这样,该计算机就不能上网了。

3>这里也主要是通过ARP欺骗进行的。有两种方法达到这样的目的:
Ø  向目标发送伪造的ARP应答数据包,其中发送方的IP地址为网管的地址,而MAC地址则为一个伪造的地址。当目标接收到ARP包,那么就更新自身的ARP缓存。如果该欺骗一直持续下去,那么目标的网管缓存一直是一个被伪造的错误记录。不过,如果使用arp –a,就知道问题所在了。

Ø  第二种方法是欺骗网管。向网管发送伪造的ARP应答数据包,其中发送方的IP地址为目标的IP地址,而MAC地址则为一个伪造的地址。这样,网管上的目标ARP记录就是一个错误的,网管发送给目标的数据报都是使用了错误的MAC地址。这种情况下,目标能够发送数据到网管,却不能接收到网管的任何数据。同时,目标自己查看arp –a却看不出任何问题来。


//防御措施

1、不要把网络安全信任关系建立在IP基础上或MAC基础上(RARP同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
2、设置静态的MAC-->IP对应表,不要让主机刷新设定好的转换表。
除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
3、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
4、使用硬件屏蔽主机。设置好路由,确保IP地址能到达合法的路径(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
5、管理员定期用响应的IP包中获得一个RARP请求,然后检查ARP响应的真性。
6、管理员定期轮询,检查主机上的ARP缓存。
7、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。 
8、若感染ARP病毒,可以通过清空ARP缓存、指定ARP对应关系、添加路由信息、使用防病毒软件等方式解决
7、IP 数据报与ip协议

计算机网络总结_第6张图片

1、IPv4 ,4位版本字段是424位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节,也就是不带任何选项的IP首部,4位能表示的最小值是15,最大值为60字节。

38位TOS字段有3个位来指定IP数据报的优先级(⽬前已经废弃不⽤),还有4个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0416位总长度是整个数据报(包括IP⾸部和IP层payload)的字节数。
每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。

516位标识:把分片后的报文集合在一起,用于组装
     3位标志   保留位     不可分片标志     结尾标识(1013位片偏移(把分片的报文排序组装,可用于判断报文的丢失)

6、TTL(Time to live):源主机为数据包设定一个生存时间,如64,每过一个路由器就把该值减1,如果减到0就表⽰路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,⽽是跳(hop)(路过路由器的次数)

7、协议字段指上层协议是TCP、 UDP、 ICMP还是IGMP。

816位校验和,只校验IP首部,数据的校验由更高层协议负责。

IP地址:
1)、网络地址:
IP地址由 网络号 和主机号组成,网络地址的主机号全为0,标识着整个网络
2)、广播地址:
广播地址通常为直接广播地址,是为了区分受限广播地址,广播地址与网络地址的主机号刚好相反,全为1,当向某个网络的广播地址发送消息时,该网络内所有主机都能收到该广播(既可以本地,也可以跨网段)
3)、组播地址
D类地址就是组播地址
回忆::

     A类地址:   0      开头,第一个字节为网络号,地址范围 0.0.0.0~127.255.255.255,后三个字节为
     B类地址:   10     开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255;
   C类地址:   110      开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255。
   D类地址:  1110       开头,地址范围是224.0.0.0~239.255.255.255D类地址作为组播地址(一对多的通信);
   E类地址:  1111       开头,地址范围是240.0.0.0~255.255.255.255E类地址为保留地址,供以后使用。
  注:只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。                                         
    4)、255.255.255.255
    为受限的广播地址,他只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组
    5)、0.0.0.0------常用于寻找自己的IP,例如在我们的RARP,BOOTP和
    DHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。
    6)、回环地址
    127.0.0.0/8被用作回环地址,回环地址表示本机地址,常用于对本机的测试,最多为127.0.0.1
8、TCP协议

计算机网络总结_第7张图片

1、TCP基于请求应答机制,它并不是完全可靠,只有经过确认的的消息才是可靠的,所以,传递的最后一条消息无法保证可靠性
2、面向连接的安全的全双工字节流(双向随时通信)管道属于半双工。
332位序号,(自己的),保证传递的数据按序到达
432位确定号,(对方的),基于确定号查看是否丢包,选择重传
5、报头长度:20-60字节(有4位首部长度)以4字节为单位,最小为5,最大为15
6、SYN:同步标志,建立连接报文(三次握手)
   FIN:用于断开连接
   ACK:当被设置时,认为是请求确认报文
   RST:重置连接,当连上服务器长时间不访问目的服务器时,会自动重置
   PSH: 为1表示有真正的date数据报
   URG:紧急标志位,被设置时,表示序列号开始到紧急指针之间的报文为紧急数据。
716位窗口大小:基于滑动窗口(接收缓冲区大小)进行流量控制的,发送方给接收方发送的信息中,会包含发送方的缓冲区大小,接收方会根据发送方缓冲区的大小进行数据调整
8、如果出现大面积的丢包,不会执行选择重传机制,会执行TCP网络拥塞算法
9、设置了多种定时器,保证数据传输的可靠性(超时重传定时器)

URG 与PSH区别:

URG标志 URG 紧急指针有效。当URG=1时,表示分段中有紧急数据应当加速传送。
PSH标志 PSH 紧急位。当PSH=1时,要求发送方马上发送该分段,而接收方尽快的将报文交给应用层,不做队列处理。
URG=1,表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),不进入接收缓冲(一般不都是待发送的数据要先进入发送缓存吗?)就直接交给上层进程,余下的数据都是要进入接收缓冲的;一般来说TCP是要等到整个缓存都填满了后再向上交付,但是如果PSH=1的话(把紧急数据之后的数据从缓存区交付给上层),就不用等到整个缓存都填满,直接交付,但是这里的交付仍然是从缓冲区中交付的,URG是不要经过缓冲区的,千万记住!

9、UDP协议

1、UDP用户数据报协议,是面向无连接的通讯协议,
2、UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
3、UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
4、UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。
5、每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:
  (1)源端口号;
  (2)目标端口号;
  (3)数据报长度;
  (4)校验值。
  使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。


  TCP  UDP 的区别:TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。
10、TCP通信之三次握手与四次挥手

计算机网络总结_第8张图片

三次握手:
首先,client端发送SYN连接请求,server端收到连接请求,会回复SYN+ACK数据报,client端再发送ACK数据报确认连接。

为什么要三次握手:
server端在回复连接请求时,数据在传送过程中可能会丢失,client端数据重新传输,并不会有什么问题,但是如果是由于网络原因产生阻塞(数据阻塞在某个节点),导致连接暂时没有成功,client端再次发送数据,这会导致server端在最终收到两个连接请求,并建立两个连接资源,要是client发送多个请求,导致资源浪费,所以三次握手灰常重要

四次挥手:
当断开连接时,就是两个人的事,client端发送FIN数据报请求断开连接,然后进入FIN_WAIT状态,server端接收到客户端数据时,发送ACK报文确定,再发送他没有发送完的数据,当发送完数据时,再发送FIN报文也请求断开连接,又因为client端不相信网络,它再次发送ACK数据报确定,进TIME_WAIT状态,server端收到ACK报文后,关闭连接,client端等待2MSL(数据报传输时间),没有收到server端的报文,说明断开连接,自己也断开连接

为什么要四次挥手:
保证一次合约的完整执行,确保数据传输的可靠性。

11、DNS协议

域名系统(DomainNameSystem)的缩写,该系统用于命名 组织到域层次结构的计算机和网络服务,可以简单的理解为将URL转换为IP地址。在Internet网上,域名与IP一一对应,DNS就是对域名解析的服务器,DNS命名用于TCP/IP网络中,通过用户好友的名称查询计算机和服务。

工作原理:
A主机要访问百度,那先向本地的NDS服务器发送请求,本地NDS服务器查询自己的DNS缓存表中有没有百度的IP地址,有的话,就直接访问百度网站服务器,没有的话,就向根DNS服务器发送访问请求,然后,根服务器根据域名地址的类型,返回对应的域DNS服务器IP地址给主机A,主机A再去访问域DNS服务器,域服务器通过查询注册信息,告诉主机A百度的服务器IP在哪里,这样就得到了百度的IP

计算机网络总结_第9张图片

12、NAT协议

公有IP:
相当于全局IP,是合法的IP地址,一个公有IP可代表着一个或多个私有IP,它时可直接寻址的IP
私有IP:
内部IP,非注册IP,专门为组织内部使用
一共分为三类:
10.0.0.0——–10.255.255.255
172.0.0.0———172.255.255.255
192.168.0.0———192.168.255.255

NAT网络地址转换属于接入广域网(WAN)技术,是一种将私有地址转化为合法IP地址的一种高技术,被广泛应用于各种类型的Internet接入方式和各种类型的网络中,完美解决了IP地址不足的问题,还能有效避免来自网络外部的攻击,隐藏并保护网络内部的计算机
当几台局域网私有IP主机想要通往外网时,在网关处就会将主机IP转换为合法IP,再连接到internet端

静态NAT:
通过手动设置,使inter的客户通信能够准确的映射到某个有特定的私有网络端口与IP上。

动态NAT:
只转换IP地址,为私有IP(一个或多个)分配一个临时的公有IP,去访问外网,数据交易完毕之后关闭。

网络地址端口转换NAPT
是将内部地址映射到一个公有IP上并在地址上选定一个端口

NAT工作原理::
1、地址转换(私有IP转换为公有IP)
2、连接跟踪(多台客户机访问不同的网站时,服务器要知道应答给谁)
3、端口转换(存在多个客户端同时访问外网,要分配到相同外网IP的不同端口上)

代理服务器:
是一种重要的服务器安全功能体现,它存在在会话层,用于沟通外网与内网主机,并提供一种安全的,防护墙式的保证,防止网络攻击,一般在路由器,网关等位置都会存在。

工作原理:
当内网主机向外网申请资源时,首先要与局域网网关,或者连接主机的终服务器建立连接,当你想要申请的资源不在代理服务器的缓存表中时,代理服务器会向更高级请求建立连接,传递要访问的资源,拿到之后返回给主机,并缓存到自己的缓存表中,以方便下次使用。

功能:
1、通过代理访问国外网站
2、提高访问速度
3、隐藏自身真实IP

分类:
HTTP:
www.采用的就是HTTP代理,我们在浏览网页的时候使用的就是Http代理服务器,它通常绑定在80,8080,3128端口上
Socks:
使用Socks协议代理的服务器都是,它时一种底层网关代理,一般只传输数据报,并不关心数据报采用的是什么协议,因此传输速率很快,通常绑定在1080端口。应用:网络游戏,网络聊天,电子邮件等
VPN:虚拟网技术,在公有网络的基础上建立的专有网络,没有实际的链路地址
反向代理:
一般出现在服务器端,通过缓冲请求资源来缓解服务器的压力。

13、HTTP协议

超文本传输协议,是互联网应用最广泛的一种网络协议,所有的www文件都遵循这个标准
1、基于client—-server模式
2、基于传输层(TCP协议),是应用层的面向对象的协议
3、访问时简单,快速(只需要传入路径或者方法就可以)
4、灵活(可以传输任意类型)
5、无连接的(限制每次连接只处理一个请求)
客户端发起请求,服务器处理请求,服务器收到客户端应答,断开连接
6、无状态连接(对输入处理没有记忆功能)
有记忆指:客户端(浏览器等cookie功能)、、服务端()
7、HTTP协议包括的请求:
GET: 请求读取由URL所标志的信息(安全的,不会修改,添加信息)
POST: 给服务器添加信息(如注释)
PUT: 在给定的URL下存储一个文档
DELETE: 删除给定的URL所标志 的资源

GET与POST方法有以下区别:

(1) 在客户端, Get 方式在通过 URL 提交数据,数据 在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
(2) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
(3) 安全性问题。正如在( 1 )中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get ;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post 为好。
(4) 安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。换句话说, GET 请求一般不应产生副作用。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。 POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解)

计算机网络总结_第10张图片

14、长连接、短连接、硬链接、软连接的区别:
1、硬链接:个人理解
硬链接相当于一个文件的别名,(一个文件有多个文件名,这就允许一个文件有多条路径名)创建一个硬链接文件,当硬链接数大于1时,你对文件(不管源文件还是连接文件)的删除操作并不会影响另一个文件,当你对一个文件进行修改操作时,会同步到其他文件。这样可以有效的防止文件的误删,误操作,当最后一个连接被删除时,文件才会被真的删除
两个限制:
      不能给目录创建硬链接
      硬链接的创建只能在统一文件系统下

2、软连接
软连接就像一个指针,它指向文件的正确位置,和window下的快捷方式差不多,
删除了源文件,则符号文件(软连接)文件就会失效,删除符号文件,还可以使用源文件

[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2 [oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3 



3、长连接
连接---发送与传输数据-----占用----不关闭
数据库的连接(频繁使用短连接会使得sock错误,也会造成资源的浪费)



4、短连接
连接---传输数据---关闭连接
一般用于多个client对一个server通信
用于web服务器的http请求 (长连接耗费资源)
15、在浏览器输入www.baidu.com 后执行的全过程:

1、客户端通过浏览器访问服务器(baidu.com),首先通过NDS(IP地址解析协议)解析到www.baidu.com的IP地址(这块不清楚可以看看DNS工作原理),通过这个IP找到客户端通往服务器的路径。

2、查找过程
客户端浏览器发起一个http会话,然后通过TCP协议封装,传输到网络层。

客户端在传递http会话过程中(传输层),会将HTTP会话请求分为报文段,添加源和目的端口,然后使用IP层的IP地址查找目的端。

客户端在网络层不用关心应用层或者传输层的信息,它主要是通过路由表确定如果到达服务器端。期间可能经过多个路由

在链路层,通过ARP协议查询给定IP的MAC地址,具体就是发送广播等一系列操作,当得到回应时,就拿到了IP的MAC地址(我们都知道 得到IP与MAC 就可以准确的到达对方),就可以直接建立联系,发送数据报请求。

你可能感兴趣的:(Linux)