TCP、UDP、SCTP概述

总图

图中同时展示了 IPv4 和 IPv6。从右向左查看该图,最右边的的 5 个网络应用在使用 IPv6,最左边的 6 个网络应用在使用 IPv4。

最左边名为 tcpdump 的网络应用或使用 BSD分组过滤器 (BPF) ,或使用数据链路提供者接口 (DLPI) 直接与数据链路层进行通信。处于其右所有 9 个应用下面的虚线标记 API,它通常是套接字或 XTI。访问 BPF 和 DLPI 的接口不使用套接字或 XTI。

注意:Linux使用一种称为 SOCK_PACKET 的特殊套接字提供对数据链路层的访问。

 

 

UDP(用户数据包协议)简单的,不可靠的,无连接的,提供消息边界的数据报协议
    1)不可靠:不保证UDP数据报会到达最终目的地,不保证各个数据包的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次;
              如果一个数据报到达了其最终目的地,但校验和检测发现有错误,或者数据报在网络传输途中被丢弃了,就无法投递给UDP套接字,也不会被源端自动重传;
    2)提供消息边界:每个数据报都有一个长度。如果一个数据报正确地到达目的地,那么该数据报的长度将随数据一道传递给接收端应用进程;
    3)提供无连接服务:比如,一个UDP客户可以创建一个套接字并发送一个数据报给一个给定的服务器,然后立即用同一个套接字发送另一个数据报给另一个服务器。
                    同样的,一个UDP服务器可以用同一个UDP套接字从若干个不同的客户接收数据报,每个客户一个数据报。

TCP(传输控制协议):  复杂的,可靠的,面向连接的,无消息边界的字节流协议
    1)面向连接:TCP客户先于某个给定的服务器建立一个连接,再跨该连接与那个服务器交换数据,然后终止这个连接;
    2)可靠的:当TCP向另一端发送数据时,它要求对端返回一个确认。如果没有收到确认,TCP就自动重传数据并等待更长时间。
             在数次重传失败后,TCP才放弃,如此尝试发送数据上所花的总时间一般为4-10分钟(依赖于具体实现);
    3)含有用于动态估算客户和服务器之间的往返时间(RTT)的算法;
    4)通过给其中每个字节关联一个序列号对所发送的数据进行排序;
    5)提供流量控制。总是告知对端在任何时刻它一次能够从对端接收多少字节的数据,这称为通告窗口;
    6)连接时全双工的;
    

SCTP(流控制传输协议) 可靠的,面向连接的,流控制传输协议,提供消息边界、传输级别多宿支持以及线头阻塞减少到最小的一种方法
    1)在客户和服务器之间提供关联,并像TCP那样给应用提供可靠性、排序、流量控制以及全双工的数据传送;  
    2)一个关联指代两个系统之间的一次通信,它可能因为SCTP支持多宿而设计不止两个地址;
    3)与TCP不同的是,SCTP是面向消息的。它提供各个记录的按序递送服务;   
    4)与UDP一样,由发送端写入的每条记录的长度随数据一道传递给接收端应用;
    5)能够在所连接的端点之间提供多个流,每个流各自可靠第按序递送消息;一个流上某个消息的丢失不会阻塞同一关联其他流上消息的投递
        (这种做法与TCP正好相反)
    6)提供多宿性,使得单个SCTP端点能够支持多个IP地址;

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值