网络的相关知识总结

 一、应用层

  •   协议:
     基于下三层写出的应用逻辑;
  • HTTP协议:
    超文本传输协议;(请求响应式 )

二、传输层:(协议都不可变)

      五元组织:源IP、源端口号、目的IP、目的端口号、协议号

  • 端口号:(标识一台主机)
    一个进程可以绑定多个端口号;
    一个端口号只能绑定一个进程;
  • UDP协议:(面向数据报,即无连接,易实现,但传输可靠性差)

                    
 

  • TCP协议:(标准长度为20,面向连接,具有可靠性)

       TCP面向连接:

           三次握手,四次挥手;
   
       连接过程中,主动断开连接的一方必须进入TIME_WAIT 状态(无法立即重启):
          
确保双方连接安全释放;
          减少网络延迟报文双向消散;       等待时间:小于等于2*MSL;(MSL 最大单向报文发送时间)   
          

        TCP保证可靠性:
         1、确认应答机制:
               最新报文永远没有应答;
               能够收到最后一条应答,就能保证最后一次应答之前的所有报文的可靠性都可以保证

         2、数据按序到达:(32位序列)保证报文按序到达;
         3、超时重传+去重机制:引入32位序列及32位确认序列,保证所有报文全部到达,若缺少就重传,序号多出就去重;
         4、流量控制:16位窗口大小(自己接收缓冲区剩余的大小)
                过慢,影响性能;过快,导致丢包。

       TCP提高性能效率:
          1、滑动窗口:自己发送程序的发送缓冲区;
                窗口之前:已发送数据并得到应答;窗口之内:可以同时发送的数据;窗口之后:待发送区域;
          2、快重传:在收到3个以上的ACK信息时,重发后ACK确认最后一个;
          3、延迟应答;
          4、捎带应答;
          5、拥塞控制:(引入慢启动:按指数增长)
                网络拥塞:大量数据拥塞在网络中,导致主机发送的数据源大量丢包;(解决的问题)
                慢启动阈值:超过阈值之前指数增长,超过阈值之后线性增长;经过一次拥塞之后,慢启动阈值变为前一次拥塞值                    的一 半。
           

 三、网络层
      IP协议
      

                       

   组装数据包:

   16位标识(id): 唯⼀一的标识主机发送的报⽂文. 如果IP报⽂文在数据链路层被分⽚片了, 那么每⼀一个⽚片⾥里⾯面 的这个id都是相同的.
    3位标志字段: 第⼀一位保留(保留的意思是现在不⽤用, 但是还没想好说不定以后要⽤用到). 第⼆二位置为1 表⽰示禁⽌止分⽚片, 这时候如果报⽂文⻓长度超过MTU, IP模块就会丢弃报⽂文. 第三位表⽰示"更多分⽚片", 如果分 ⽚片了的话, 最后⼀一个分⽚片置为1, 其他是0. 类似于⼀一个结束标记.
   13位分⽚片偏移(framegament offset): 是分⽚片相对于原始IP报⽂文开始处的偏移. 其实就是在表⽰示当前 分⽚片在原报⽂文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后⼀一个报⽂文之 外, 其他报⽂文的⻓长度必须是8的整数倍(否则报⽂文就不连续了).       

MTU  (数据链路层)限制:
           
相当于法快递时对尺寸的限制;以太网帧中的数据长度规定最小46字节,最大1500字节。
                    (不同网络类型有不同的MTU)
            数据包长度大于拨号链路的MTU时,需要对数据包进行分片;

IP 地址分为:网络号、主机号
   网络号:保证互相连接的两个网段具有不同的标识;
   主机号:同一网段中,主机之间具有相同的网络号,但必须有不同的主机号;
DHCP技术:⾃动的给⼦⽹内新增主机节点分配IP地址, 避免了手动管理IP的不便.
   
实际网络架设中, 不会存在⼀个⼦网内有这么多的情况. 因此⼤大量的IP地址都被浪费掉了. 
CIDR技术:引入一个额外的⼦网掩码(subnet mask)来区分网络号和主机号; 
    
⼦⽹网掩码也是一个32位的正整数. 通常⽤用⼀一串 "0" 来结尾;
    将IP地址和⼦网掩码进⾏行 "按位与" 操作, 得到的结果就是网络号;
    网络号和主机号的划分与这个IP地址是A类、B类还是C类⽆无关;
    提⾼了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加。

   IP地址与⼦网掩码做与运算可以得到网络号, 主机号从全0到全1就是⼦网的地址范围;
   IP地址和⼦网掩码还有一种更简洁的表⽰示⽅方法,例如140.252.20.68/24,表⽰示IP地址为140.252.20.68, ⼦网掩码的高24位是     1,也就是255.255.255.0
特殊IP地址:
将IP地址中的主机地址全部设为0, 就成为网络号, 代表这个局域网;
将IP地址中的主机地址全部设为1, 就成为了⼲⼴广播地址, ⽤用于给同⼀一个链路中相互连接的所有主机发 送数据包;
127.*的IP地址⽤用于本机环回(loop back)测试,通常是127.0.0.1 。
IP地址的数量限制:
CIDR在⼀一定程度上缓解了IP地址不够⽤用的问题(, 仍然不是很够⽤用. 这时候有三种⽅方式来解决:         
      动态分配IP地址: 只给接⼊网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接⼊入互联网中,IP地址的数量限制
得到的IP地址不⼀一定是相同的;
       IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6⽤用16字节128位 来表⽰示⼀一个IP地址; 但是目前IPv6还没有普及;
        NAT技术:能够将私有IP对外通信时转为全局IP. 也就是就是⼀种将私有IP和全局IP相互转化的技术⽅法:
                          请求信息向外传输时,不停替换源代码;
                          响应信息往回传输时,需要借助NAT交换机+NAT转换表;(NAT交换机主要负责替换主机号,维护主机与外                            网之 间的映射关系)
                          缺点:
                                  ⽆无法从NAT外部向内部服务器建⽴立连接;
                                  装换表的⽣生成和销毁都需要额外开销;
                                  通信过程中⼀旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开; 

私有IP地址和公网IP地址:
        
私有IP地址:不同局域网内可能出现同一个IP地址;
        公网IP地址:一个IP地址标识一台主机,不能重复;
路由:转发分组实现网络互连,并连接两个IP子网。还是指分组从源端到目的端时路径的进程。        
      [唐僧问路例⼦子1] ——理解路由功能
      路由的过程, 就是这样跳⼀跳(Hop by Hop) "问路" 的过程. 所谓 "⼀一跳" 就是数据链路层中的⼀一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。
      当IP数据包, 到达路由器时, 路由器会先查看目的IP; 路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器; 依次反复, 一直到达目标IP地址; 
       [唐僧问路例⼦子2]——深刻体会路由如何明确下一跳
       路由表可以使⽤用route命令查看 如果目的IP命中了路由表, 就直接转发即可; 路由表中的最后一行,主要由下⼀跳地址和发送接口两部分组成,当目的地址与路由表中其它⾏行都不 匹配时,就按缺省路由条目规定的接⼝发送到下一跳地址。 

四、数据链路层:用于两个设备(同⼀一种数据链路节点)之间进行传递.
        以太网帧格式:
   

 认识MAC地址:
       
 MAC地址⽤用来识别数据链路层中相连的节点; ⻓长度为48位, 及6个字节. ⼀般⽤用16进制数字加上冒号的形式来表⽰示(例如: 08:00:27:03:fb:19) 在网卡出厂时就确定了, 不能修改. mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地 址, 可能会冲突; 也有些网卡⽀支持⽤用户配置mac地址)。
          IP地址描述的是路途总体的 起点 和 终点;
          MAC地址描述的是路途上的每⼀一个区间的起点和终点;
MTU与IP地址:
     
   将较⼤大的IP包分成多个⼩小包, 并给每个⼩小包打上标签;
         每个⼩小包IP协议头的 16位标识(id) 都是相同的;
         每个⼩小包的IP协议头的3位标志字段中, 第2位置为0, 表⽰示允许分⽚片, 第3位来表⽰示结束标记(当前是是最后一个小包, 是的话置为1, 否则置为0);
         到达对端时再将这些⼩小包, 会按顺序重组, 拼装到⼀一起返回给传输层;
          一旦这些⼩小包中任意一个⼩小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;
MTU与UDP协议:
         
一旦UDP携带的数据超过1472(1500 - 20(IP⾸首部) - 8(UDP⾸首部)), 那么就会在网络层分成多个IP数 据报. 这多个IP数据报有任意⼀个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据 报在网络层被分⽚片, 整个数据被丢失的概率就大大增加了.
MTU与TCP协议:
          
TCP的⼀个数据报也不能无限⼤, 还是受制于MTU. TCP的单个数据报的最⼤消息⻓度, 称为 MSS(Max Segment Size);
          TCP在建立连接的过程中, 通信双方会进行MSS协商. 最理想的情况下, MSS的值正好是在IP不会被分⽚处理的最大长度(这个⻓度仍然是受制于数据链路层的MTU). 双⽅在发送SYN的时候会在TCP头部写入⾃己能⽀持的MSS值. 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS. MSS的值就是在TCP⾸首部的40字节变⻓选项中(kind=2); 
ARP协议:建立了主机 IP地址 和 MAC地址 的映射关系. 

        源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求⼲广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
       目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将⾃自⼰己的硬件地址填写在应答包中;
       每台主机都维护一个ARP缓存表,可以⽤用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬 件地址;


 
  


            


 

猜你喜欢

转载自blog.csdn.net/fayfayfaydyt/article/details/81950677