zoukankan      html  css  js  c++  java
  • TCP/UDP

    80 http
    21 ftp
    23 sftp
    25 smtp
    443 https
    2375 docker
    10051 zabbix_server
    10050 zabbix_agent
    161 snmp
    162 snmptrap 
    3306 mysql
    6379 redis
    27017 mongoDB
    53 dns域名解析
    rabbit 5672
    

    UDP User Datagram Protocol 用户数据报协议


    TCP Transmission Control Protocol 传输控制协议

    server端
    #导入模块
    import socket
    if __name__ == '__main__':
        #创建套接字
        #等待其他客户端与其建立连接的套接字
        tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
       #立即释放端口  tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
    通常在一个服务器进程终止后,操作系统会停留几分钟	它的端口,从而防止其他进程,甚至包括本服务器的自己的另外一个实例,在超时之前使用这个端口) 将SO_REUSEADDR设置为True在程序终止后立马释放这个端口
    
        #绑定端口
        tcp_server_socket.bind(('',4444))
        #同一时刻允许多少个客户端与其建立连接
        #吧tcp_server_socket主动变被动,等待客户端进行连接
        tcp_server_socket.listen(6)
        #如果某个客户端与其建立连接成功以后,服务端就会有一个对应的套接字与其进行收发数据
        tcp_client,ip_part = tcp_server_socket.accept()
    
        #接收数据
        data = tcp_client.recv(1024)
    
        print('客户端:%s'%data.decode())
        #发送数据
        tcp_client.send(input('发送:').encode())
        #关闭套接字(不再和建立成功的客户端进行通信)
        tcp_client.close()
        #关闭套接字(不在允许其他客户端进行连接)
        tcp_server_socket.close()
    
    
    
    client端
    import socket
    
    # 创建tcp socket
    tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 链接服务器
    tcp_client_socket.connect((ip, port))
    
    
    tcp_client_socket.send(send_data.encode("gbk"))
    
    # 接收对方发送过来的数据,最大接收1024个字节
    recvData = tcp_client_socket.recv(1024)
    print('接收到的数据为:', recvData.decode('gbk'))
    
    # 关闭套接字
    tcp_client_socket.close()
    

    建立连接 三次握手

    客户发送一个消息包,包含一个标志位SYN,连接序号seq100,同时在100的基础上加1,等待着服务器的响应回传
    服务端接受到客户的请求连接SYN,发送一个确认请求,表明可以进行连接,生成确认序号101,给客户端发过去,并且此时服务端也要请求客户端,生成一个SYN+seq,并且在seq的基础上加1等待着客户端的连接回传。
    客户端接收到消息包,自身的101和服务端过来的ack(101)进行比较,通过后给服务端发送确认请求标志位ACK,确认序号601
    服务器接受到,比较通过,连接建立
    最后101的继续传输是为了区分是第一次拉握手还是第三次握手。


    image.png

    断开连接 四次挥手



  • 相关阅读:
    在Ubuntu上安装PHPStudy组件
    手把手教你在Ubuntu上分别安装Nginx、PHP和Mysql
    ErrorKiller:Failed to decode response: zlib_decode(): data error
    HTTP和FTP上传文件的区别
    关于HTTP,你知道哪些?
    史上最全的FTP网址
    深入解读TCP/IP
    nefu 462 fib组合
    MZL's xor
    The Highest Mark(01背包)
  • 原文地址:https://www.cnblogs.com/cizao/p/11481783.html
Copyright © 2011-2022 走看看