• Python(网络基础)


    day33

    参考:http://www.cnblogs.com/linhaifeng/articles/5937962.html

    IP协议:

    • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
    • 范围0.0.0.0-255.255.255.255
    • 一个ip地址通常写成四段十进制数,例:172.16.10.1

    ip地址分成两部分

    • 网络部分:标识子网
    • 主机部分:标识主机

    注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网

    例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网

    子网掩码

    所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

    知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

    比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,

    172.16.10.1:10101100.00010000.00001010.000000001

    255255.255.255.0:11111111.11111111.11111111.00000000

    AND运算得网络地址结果:10101100.00010000.00001010.000000000->172.16.10.0

    172.16.10.2:10101100.00010000.00001010.000000010

    255255.255.255.0:11111111.11111111.11111111.00000000

    AND运算得网络地址结果:10101100.00010000.00001010.000000000->172.16.10.0

    结果都是172.16.10.0,因此它们在同一个子网络。

    总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

    tcp报文

    tcp三次握手和四次挥手(https://cloud.tencent.com/developer/news/257281

    • seq(序号):TCP连接字节流中每一个字节都会有一个编号,由本地随机产生,而本字段的值指的是本报文段所发送数据部分第一个字节的序号。
    • ack(确认号):表示期望收到的下一个报文段数据部分的第一个字节的编号(确认号指的是期望接收到下一个字节的编号)。
    • SYN:当本字段为1时,表示这是一个连接请求或者连接接受报文。
    • ACK:仅当本字段为1时,确认号才有效。
    • FIN:用来释放一个连接。当本字段为1时,表示此报文段的发送端数据已发送完毕,要求释放运输连接。

    ===========================================================================================================

     数据传送前三次握手

    连接建立阶段:

    第一次握手:客户端的应用进程主动打开,并向客户端发出请求报文段。其首部中:SYN=1(服务器由SYN=1知道,客户要求建立联机),seq=x,即SYN包。

    第二次握手:服务器应用进程被动打开。若同意客户端的请求,则发回确认报文,其首部中:SYN=1,ACK=1(为1时确认号有效),ack=x+1(确认号,回应与x相关的信息),seq=y,即SYN+ACK包。

    第三次握手:客户端收到确认报文之后,通知上层应用进程连接已建立,并向服务器发出确认报文,其首部:ACK=1(为1时确认号有效),ack=y+1(确认号),即确认包ACK。当服务器收到客户端的确认报文之后,也通知其上层应用进程连接已建立。

    在这个过程中,通信双方的状态如下图,其中CLOSED:关闭状态、LISTEN:收听状态、SYN-SENT:同步已发送、SYN-RCVD:同步收到、ESTAB-LISHED:连接已建立

    三次握手,为了初始化Sequence Number的初始值

    通信双方需要通知对方自己的Sequence Number,作为以后数据通信的序号,以保证应用层接收到的数据,不会应网络上的传输问题而乱序。

    ==============================================================================================================

    断开时必须是四次挥手,因为有可能数据并没有发送完,不能马上断开。

    连接释放过程:

    第一次挥手:数据传输结束以后,客户端的应用进程发出连接释放报文段,并停止发送数据,其首部:FIN=1,seq=u。

    第二次挥手:服务器端收到连接释放报文段之后,发出确认报文,其首部:ack=u+1,seq=v。此时本次连接就进入了半关闭状态,客户端不再向服务器发送数据。而服务器端仍会继续发送。

    第三次挥手:若服务器已经没有要向客户端发送的数据,其应用进程就通知服务器释放TCP连接。这个阶段服务器所发出的最后一个报文的首部应为:FIN=1,ACK=1,seq=w,ack=u+1。

    第四次挥手:客户端收到连接释放报文段之后,必须发出确认:ACK=1,seq=u+1,ack=w+1。 再经过2MSL(最长报文端寿命)后,本次TCP连接真正结束,通信双方完成了他们的告别。

    在这个过程中,通信双方的状态如下图,其中:ESTAB-LISHED:连接建立状态、FIN-WAIT-1:终止等待1状态、FIN-WAIT-2:终止等待2状态、CLOSE-WAIT:关闭等待状态、LAST-ACK:最后确认状态、TIME-WAIT:时间等待状态、CLOSED:关闭状态

    为什么需要四次挥手:

    因为tcp是全双工的,发送方和接收方都需要FIN报文和ACK报文。

    dns解析域名。

    协议部分:http://

    域名部分:www.cnblogs.com  ip

    资源部分:/alex3714

    https://www.cnblogs.com/linhaifeng/articles/5951486.html

    子网掩码的划分教程:

    https://jingyan.baidu.com/article/ae97a646d936ddbbfd461d02.html

    以192.168.1.53/27为例讲解

    相应掩码为:11111111.11111111.11111111.11100000

    以上橙色数字为27位网络号,即网络号向主机号接了3位。(一般C网是24位网络号,后面8位是主机号)

    8位主机号减去借去的3位,剩下5位。

    最多可容纳的主机数: 2^5 = 32

    可用的主机数: 2^5 - 2 = 30(减去网络地址广播地址)

    子网掩码的十进制数是11111111.11111111.11111111.11100000

    十进制:(255,255,255,224)

    网络号向主机号借了3位(子网地址部分),即分成2^3 = 8个子网。

    下面计算网络地址,广播地址,和可用IP

    IP地址:   11000000.10101000.00000001.00110101(192.168.1.53)

    子网掩码:  11111111.11111111.11111111.11100000

    网络地址:11000000.10101000.00000001.00100000(用IP地址、子网掩码and计算,即将IP地址中主机位部分设为0,得192.168.1.32)

    广播地址:11000000.10101000.00000001.00111111(网络位+全为1的主机位,将主机位全设为1,得192.168.1.63)

    可用的IP范围:192.168.1.33~192.168.1.62(可用主机数30)

    各子网的参数如下:

    第一子网的IP段为:192.168.1.0~192.168.1.31(32个)

    可以主机数:          192.168.1.1~192.168.1.30(30个)

    第二子网的IP段为:192.168.1.32~192.168.1.63(32个)

    可以主机数:          192.168.1.33~192.168.1.62(30个)

    ............类推

    192.168.1.53/27位于第2子网,也可得可用主机数为192.168.1.33~192.168.1.62(30个)

  • 相关阅读:
    python threading acquire release
    .net支付宝调试
    C#获取微信openid
    KindeEditor图片上传插件用法
    .net Repeater内部的按钮事件代码demo(Repeater内button的删除事件)
    .net 执行页面跳转弹窗提示,刷新代码
    .net验证控件
    上传图片
    数据库写入时间
    数据库读取
  • 原文地址:https://www.cnblogs.com/112358nizhipeng/p/9916628.html
Copyright © 2020-2023  润新知