python-study-28

CLOSED:表示关闭状态(初始状态)。

LISTEN:该状态表示服务器端的某个SOCKET处于监听状态,可以接受连接。

SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,随即进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。

SYN_RCVD: 该状态表示接收到SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂。此种状态时,当收到客户端的ACK报文后,会进入到ESTABLISHED状态。

ESTABLISHED:表示连接已经建立。

FIN_WAIT_1: FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。区别是: FIN_WAIT_1状态是当socket在ESTABLISHED状态时,想主动关闭连接,向对方发送了FIN报文,此时该socket进入到FIN_WAIT_1状态。 FIN_WAIT_2状态是当对方回应ACK后,该socket进入到FIN_WAIT_2状态,正常情况下,对方应马上回应ACK报文,所以FIN_WAIT_1状态一般较难见到,而FIN_WAIT_2状态可用netstat看到。

FIN_WAIT_2:主动关闭链接的一方,发出FIN收到ACK以后进入该状态。称之为半连接或半关闭状态。该状态下的socket只能接收数据,不能发。


TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,等2MSL后即可回到CLOSED可用状态。如果FIN_WAIT_1状态下,收到对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。

CLOSE_WAIT: 此种状态表示在等待关闭。当对方关闭一个SOCKET后发送FIN报文给自己,系统会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,察看是否还有数据发送给对方,如果没有可以 close这个SOCKET,发送FIN报文给对方,即关闭连接。所以在CLOSE_WAIT状态下,需要关闭连接。


LAST_ACK: 该状态是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,即可以进入到CLOSED可用状态。


tcp第十一种状态:

CLOSING:这种状态较特殊,属于一种较罕见的状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。
View Code

 

tcp三次握手与四次挥手

半连接池

限制的是同一时刻的请求数,而非连接数

arp协议与mac地址学习

ARP协议其主要用作将IP地址翻译为以太网的MAC地址 

交换机初始有一个空mac表 端口与mac地址对应 获取一次后续就不在获取

 

osi五层协议

数据发送流程

今日内容:

'''
1、C/S B/S
    client<---基于网络通信--->server
    browser<---基于网络通信--->server

    server端必须满足的条件:
        1、稳定运行(网络、硬件、操作系统、服务端应用软件),对外一直提供服务

        2、服务端必须绑定一个固定的地址

2、什么是互联网
    两大要素
    1、底层的物理连接介质,是为通信铺好道路的
    2、一套统一的通信标准---》互联网通信协议

    互联网协议就是计算机界的英语

3、自定义协议:
    任何一种通信协议都必须包含两部分:
        1、报头:必须是固定长度
        2、数据


0000 0000.0000 0000.0000 0000.0000 0000
1111 1111.1111 1111.1111 1111.1111 1111


172.16.10.1/24

172.16.10.1
255.255.255.0000 0000



172.16.10.1:      10101100.00010000.00001010.00000001
255.255.255.255.0: 11111111.11111111.11111111.00000000
子网地址:         10101100.00010000.00001010.00000000
                   172.16.10.0



172.16.10.2:     10101100.00010000.00001010.00000001
255255.255.255.0: 11111111.11111111.11111111.00000000
子网地址:        10101100.00010000.00001010.00000000
                  172.16.10.0

4、标识地址的方式:
    ip+mac就能标识全世界范围内独一无二的一台计算机
    ip+mac+port就能标识全世界范围内独一无二的一个基于网络通信的应用软件
    url地址:标识全世界范围内独一无二的一个资源

5、OSI五层协议(了解):

6、tcp协议
    三次握手建立连接
    四次挥手断开连接

    1、为何建连接要三次而断开连接却需要四次
    2、为何tcp协议是可靠协议,而udp协议是不可靠协议
    3、tcp协议建立连接与断开连接的状态信息以及表示的意义

7、半连接池:
    限制的是同一时刻的请求数,而非连接数

'''
View Code
上节课复习:
    1、什么是异常:
        异常是错误发生的信号,程序一旦出错就会产生一个异常
        如果该异常没有被程序处理,就会抛出来,程序也随即终止

        一类是语法错误导致的异常SyntaxError
            语法上的错误应该在程序运行前就立刻修正
        另外一类是逻辑错误导致的异常
            逻辑错误有时候是不可避免的,于是需要在程序的运行过程中加以处理

    2、处理异常的语法
        try:
            code1
            code2
            code3
            ...
        except 类型1 as e:
            print(e)
        except 类型2 as e:
            print(e)
        except 类型3 as e:
            print(e)
        ...
        except Exception as e:
            print(e)
        else:
            在被检测的代码块没有异常发生时会自动执行
        finally:
            被检测的代码块无论有无异常都会自动执行

        code4




今日内容:
    1、什么是网络
        互联网协议OSI七层协议
        tcp/udp
        tcp三次握手+四次挥手
    2、基于tcp协议通信的套接字
复习与安排

 

posted @ 2018-07-05 18:20  xujinjin  阅读(105)  评论(0编辑  收藏  举报