• TCPIP深入


    详细有七层

    image-20201209190804107

    但是一般来说对我们开发来说归为五层

    image-20201209190951330

    应用层的程序要准备某种协议的数据,在发送前,通过内核完成和别人的连接

    什么是tcp
    	面向连接的 -》一定要聊三次握手
    	可靠的传输协议
        
    
    当双方走完三次握手之后,双方会在自己的内存里开辟一个队列空间,里面有一些资源,比如socket等。双方有资源为对方服务,就是有了连接。
    tcp保证一定能发送对,并且保证顺序。
    我们拿到的数据其实是从内核拿的,数据可以是早就发过来的。
    tcp在默认情况下,没有心跳,可以在内核中配置。但是这个对我们开发来说是不用特地设置的。
    
    
    在linux系统下,我们可以使用tcpdump工具抓包查看三次握手四次挥手的过程
    tcpdump -nn -i eth0 port 80 监听本地网卡eth0 的80端口,当我们在另一个终端执行curl www.baidu.com的时候,就会看到这个过程
    

    image-20201209203417868

    什么是下一跳

    什么是下一跳
    我们使用route -n命令可以看到自己的网络配置信息,当我们准备访问一个页面的时候,比如ping百度。
    这个时候我们们从dns上拿到百度的ip地址,然后,会按照上面的条目进行与运算(就是判断一下百度的ip和我们的ip是不是在一个局域网里)很明
    显,前面两条都无法匹配。220.181.38.149分别于255.255.255.0和255.255.0.0做运算之后的结果和前面Destination无法对应,当与第
    三条进行运算的时候,因为子网掩码是0.0.0.0,运算之后还是220.181.38.149,与前面的0.0.0.0能匹配上,那么就会走这一行的网关,也就
    是192.168.150.2,这个网址就是下一跳,意味着我们只要把信息交给这个下一跳,我们就不用管了,他之后会不断的重复上面的过程,一直跳到
    百度。gateway中0.0.0.0表示不需要下一跳,即在本地局域网中。
    

    arp协议广播的过程

    广播的过程只有两句

    image-20201209204829285

    数据链路层为什么叫链路

    当我们传输数据的时候,我们可以肯定,我们的ip是肯定不变的,也就是socket四元组不变,但是因为有下一跳的概念,我们的数据是不断发给下一跳的,那么我们就肯定需要不断换mac地址,因为下一个设备的mac地址是不断换的。所以这个样子就像我们数据结构的链路。

    image-20201209205219805

    负载均衡

    一种是nginx七层的,基于反向代理的
    一种是lvs四层的
    
    lvs四层负载均衡是不会和客户端建立三次握手的
    nginx本身是一个web server,有七层,所以肯定会建立连接。
    

  • 相关阅读:
    敏捷开发之道(二)极限编程XP
    敏捷开发之道(一)敏捷开发宣言
    [原]项目进阶 之 持续构建环境搭建(四)Jenkins环境搭建
    [原]项目进阶 之 持续构建环境搭建(三)Maven环境搭建
    [原]项目进阶 之 持续构建环境搭建(二)Nexus私服器
    项目进阶 之 持续构建环境搭建(一)架构
    SVN备份教程(三)
    jQuery 层次选择器
    利用web workers实现多线程处理
    本地存储(localStorage、sessionStorage、web Database)
  • 原文地址:https://www.cnblogs.com/chiyun/p/14118822.html
Copyright © 2020-2023  润新知