• 【1】了解socket


    套接字理解

    1. socket学习 == 计算机之间如何通信
    2. socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 网络编程就是用代码将两台电脑交换数据,操作系统提供了socket来编写传输程序,不同的硬件设备都被看成一个文件,每个文件linux会给它分配一个id,即文件描述符,
      通过socket来创建一个网络连接,即 打开一个网络文件,socket()返回值就是文件描述符,
    3. 套接字有多种,我们常用的是internal套接字, internal套接字分为多种数据传输方式,常用的两种
    4. 两台套接字之间的通信,相当于两个套接字间的通信;

    流格式套接字 (面向连接套接字)

     (Strem Sockets) 用SOCK_STREAM表示 小写sock_stream

     【1】特征:
    • 数据在传输过程中不会消失
    • 数据是按照顺序传输的;
    • 数据的发送和接收不是同步的;

      【2】理解

    • 流格式套接字的内部有一个缓冲区(也就是字符数组),通过 socket 传输的数据将保存到这个缓冲区。接收端在收到数据后并不一定立即读取,只要数据不超过缓冲区的容量,接收端有可能在缓冲区被填满以后一次性地读取,也可能分成好几次读取。
    • 传送端有自己的节奏,接收端也有自己的节奏,它们是不一致的。http 协议就基于面向连接的套接字
    • TCP(传输控制协议)会控制你的数据按照顺序到达没有错误,保证数据的正确性;
    • IP(网络协议)会控制数据如何从源头到达目的地,即路由;

      【3】总结

    • SOCK_STREAM 是一种可靠的、双向的通信数据流,数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送。

     数据报格式套接字(无连接套接字)

    (Datagram Sockets) 用SOCK_DGRAM表示     小写sock_dgram

      【1】特征
          1.强调快速传输而非传输顺序;
          2.传输的数据可能丢失也可能损毁;
          3.限制每次传输的数据大小
          4.数据的发送和接收是同步的;
      【2】理解
          1.数据报套接字也使用 IP 协议作路由,但是它不使用 TCP 协议,而是使用 UDP 协议(User Datagram Protocol,用户数据报协议)
          2.计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。
      【3】总结
          1.数据报套接字是一种不可靠的、不按顺序传递的、以追求速度为目的的套接字。

     总结

    • 无连接套接字传输效率高,但是不可靠,有丢失数据包、捣乱数据的风险;
    • 有连接套接字非常可靠,万无一失,但是传输效率低,耗费资源多。

      

    做一个优秀的程序媛
  • 相关阅读:
    全局配置策略
    RESTful api介绍
    AJAX
    django cookie session 自定义分页
    mysql 索引优化
    yii2 response响应配置
    Django中的信号
    django orm相关操作
    django orm介绍以及字段和参数
    django form和ModelForm组件
  • 原文地址:https://www.cnblogs.com/oytt/p/13534870.html
Copyright © 2020-2023  润新知