标准套接字SOCKET原理及编程(1)

来源:互联网 发布:sybase数据库12.5 编辑:程序博客网 时间:2024/06/06 09:21

从程序员的角度看网络协议的特征:

  • 面向消息
对没和离散写命令来说,如果传送协议把他们当成一个独立的消息在网上传送,该协议是面向消息的。
相对来说:伪流(pseudo-stream)例如(TCP粘包问题,后果:最后一个数据包数据读取不完整)
发送的时候分开发,接受的时候整体接收。
  • 面向连接和无连接
    1. 通常情况下,一个服务提供链接服务和无连接服务
    2. 面向连接服务中心,进行数据交换之前,必须与通讯方简历一条路径连接。
    3. 这样既确定了通讯方之间存在的路由,有保证了通信双方都是活动的、都可彼此相应,单其特点是在通信双方简历一个通信信道时需要很多开支。
    4. 除此以外,大部分面向连接的协议为保证投递无误,可能会因为执行额外的计算来验证正确性,因此,进一步增加开支。
    5. 而无连接协议却不保证接收端正在接听
    6. 无连接服务类似于邮政服务,发信人装入信箱即可,是否收到择不关心。
  • 可靠性和次序型
  • 从容关闭
    1. 只出现在面向连接协议中
    2. 在这种关闭过程中,一方关闭通信会话,但另一方仍然可以读取线上或者网络堆栈上已挂起的数据
    3. 如果不支持从容关闭,只要另一方关闭了通讯,都回到导致连接立即中断,数据丢失,接收端不能读取数据的这种情况。
  • 广播数据
    1. 广播数据既数据从一个工作站发出,局域网内的其他所有工作站能收到
    2. 这一特征适用于无连接协议,因为LAN上的所有机器都可以获得处理广播消息
    3. 使用广播消息不利于每台机器处理消息
  • 多播数据、组播(广播改良版)
    1. 指一个进程发送数据的能力,这些数据即将由一个或者读个节后段接受
    2. 进程加入一个多播回话的方法和采用与基层协议与有关
  • 服务质量(QoS)
    1. QoS是应用的一种能力,用于请求针对专门用途分配的特定贷款
    2. 视频传输
    3. 缓存
  • 部分消息
    1. 用于面向消息的协议
    2. 比如说,一个用用想接受消息,但本地计算机已经收到了部分收据
    3. 发送端
  • 路由选择与考虑
    1. 一个重要的考虑就是协议是否可以路由
    2. 如果协议可路由,就可在两个工作站之间建立一条成功的通讯路径,不管这两个工作站之间存在的网络硬件是什么
    3. 飞路由协议不能做出这样的规定:路由器会将它收到的费路由协议数据包统统丢掉
    4. 路由器不对发自费路由协议的数据包进行转发,即便数据包的既定目的地在其连接的子网上。

  • 字节序

    1. 不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,这个叫主机序
    2. 最常见的a.little endian;b.big endian
    3. 网络字节序是TCP/IP中规定好的一种数据表示的格式,它的具体的CPU类型、操作系统无关,从而可以保证数据咋不同主机之间传输的正确解释。网络字节顺序采用big endian排序方式。

  • 最大传输单元MTU(一个包最大发多少数据)

    1. 在网络层以下起作用
    2. 通常与通信接口有关
    3. 一般最大传输单元不会影响不会影响伪流式的协议可发送的最大包大小,理论上TCP包没大小限制,IP64K,UDP<64K(头)。
  • 其他