美文网首页
2018-09-12day18-网络基础

2018-09-12day18-网络基础

作者: 猫爱老鼠丶 | 来源:发表于2018-09-12 20:44 被阅读0次

    OSI参考模型

    • 应用层:所有产生网络流量的程序(QQ、浏览器、有道)
    • 表示层:数据传输前的压缩、加密、确定编码方法等操作
    • 会话层:查看木马(netstat -nb)(只要需要网络请求,就必顶会建立会话)
    • 传输层:可靠传输、不可靠传输、流量控制
    • 网络层:负责选择最佳路径、规划IP地址
    • 数据链路层:帧的开始和结尾、透明传输、差错校验
    • 物理层:借口标准、电器标准

    计算机数据通信过程

    过程:客户端通过下一跳找到DNS的IP地址对应的服务器,DNS服务器会对客户端访问的域名进行解析,然后再将解析域名后得到的IP地址返回给客户端,客户端根据解析到的IP地址找到相应的服务器,并发出请求。


    数据封装

    数据解封

    传输层两个协议(TCP/UDP)

    • TCP协议(Transmission Control Protocol,传输控制协议)
      1.需要传输的文件分段传输
      2.建立回话
      3.可靠传输
      4.流量控制
    • UDP协议(User Data Protocol,用户数据报协议)
      1.一个数据包就能完成数据通信
      2.不需要建立会话
      3.不可靠传输
      4.不需要流量控制

    TCP如何实现可靠传输

    HTTP协议

    客户端如何找到想要的服务器?
    客户端通过URL找到想要连接的服务器
    1.什么是URL

    • URL的全称是Uniform Resource Locator(统一资源定位符)
    • 通过1个URL,能找到互联网上唯一的1个资源
    • URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL

    2.URL的基本格式 = 协议://主机地址/路径
    协议:不同的协议,代表着不同的资源查找方式、资源传输方式
    主机地址:存放资源的主机(服务器)的IP地址(域名)
    路径:资源在主机(服务器)中的具体位置

    3.URL中常见的协议

    • HTTP
      超文本传输协议,访问的是远程的网络资源,格式是http://
      http协议是在网络开发中最常用的协议
    • file
      访问的是本地计算机上的资源,格式是file://(不用加主机地址)
    • mailto
      访问的是电子邮件地址,格式是mailto://
    • FTP
      访问的是共享主机的文件资源,格式是ftp://

    4.HTTP协议的作用
    a.规定客户端和服务器之间的数据传输格式
    b.让客户端和服务器能有效地进行数据沟通

    5.HTTP协议的特点

    • 简单快速
      因为HTTP协议简单,所有HTTP服务器的程序规模小,因而通信速度很快
    • 灵活
      HTTP允许传输各种各样的数据
    • HTTP 0.9和1.0使用非持续连接
      限制每次连接只处理一个请求,服务器对客户端的请求做出响应后,马上断开连接,这种方式可以节省传输时间

    6.HTTP通信过程


    7.常见响应状态码
    状态码 英文名称 中文描述
    200 OK 请求成功
    400 Bad Request 客户端请求的语法错误,服务器无法解析
    404 Not Found 服务器无法根据客户端的请求找到资源
    500 Internal Server Error 服务器内部错误,无法完成请求

    8.发送HTTP请求的方法(GET/POST)
    GET和POST的主要区别表现在数据传递上

    • GET
      a.在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如
      http://www.test.com/login?username=123&pwd=234&type=JSON
      b.由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
    • POST
      a.发给服务器的参数全部放在请求体中
      b.理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)

    python对套接字的支持

    服务器

    import socket
    
    # 1.创建套接字对象
    server = socket.socket()
    # 2.绑定IP地址和端口
    server.bind(('10.7.153.120', 8080))
    # 3.监听
    server.listen(512)
    while True:
        # 4.接收请求
        connect,addr = server.accept()
        # 5.发送数据
        with open('./files/cat.jpg', 'rb') as f:
            data = f.read()
        connect.send(data)
        # 6.接收数据
        # connect.recv(512)
        # 7.关闭连接
        connect.close()
    

    客户端

    import socket
    
    client = socket.socket()
    client.connect(('10.7.153.120', 8080))
    
    # 创建一个空的二进制数据
    all_data = bytes()
    
    # 接收从服务器传回来的数据
    data = client.recv(1024)
    while data:
        print('接收到数据')
        all_data += data
        data = client.recv(1024)
    
    with open('./files/new.jpg', 'wb') as f:
        f.write(all_data)
    client.close()
    

    http请求

    import requests
    
    # 1.准备url
    url = 'https://www.apiopen.top/satinApi?type=1&page=1'
    
    # 2.发送请求
    """
    get(url,参数对应的字典)
    post(url,参数对应的字典)
    返回值是服务器返回的响应
    """
    response = requests.get(url)
    # requests.get('https://www.apiopen.top/satinApi',{'type': 1, 'page': 1})
    print(response)
    
    # 3.通过响应获取服务器返回的数据
    # a.获取字符串类型的数据
    print(response.text)
    
    # b.获取json格式的数据
    print(response.json())
    
    # c.获取二进制格式的数据
    print(response.content)
    
    # 4.获取响应头(了解)
    print(response.headers)
    

    相关文章

      网友评论

          本文标题:2018-09-12day18-网络基础

          本文链接:https://www.haomeiwen.com/subject/uojbgftx.html