UNIX网络编程详解之传输层

本文详细介绍了UNIX网络编程中的传输层,重点讨论了TCP、UDP和SCTP协议。TCP是一个可靠的字节流协议,而UDP是简单的、不可靠的数据报协议。SCTP提供类似TCP的可靠性,但具有消息边界和多宿支持。文章还涵盖了TCP的三路握手、连接终止序列、TIME_WAIT状态,以及TCP和UDP的缓冲机制。同时,提到了IPv4和IPv6的区别和使用场景。
摘要由CSDN通过智能技术生成
  1. 概述

本章的焦点是传输层,包括TCP、 UDP和SCTP (Stream Control Trasnission Protocol, 流控制传输协议)。绝大多数客户/服务器网络应用使用TCP或UDP。SCTP是一一个较新的协议,最初设计用于跨因特网传输电话信令。这些传输协议都转而使用网络层协议IP:或是IPv4, 或是IPv6。尽管可以绕过传输层直接使用IPv4或IPv6,但这种技术(往往称为原始套接字)却极少使用。

UDP是一个简单的、不可靠的数据报协议,而TCP是一个复杂、可靠的字节流协议。SCTP与TCP类似之处在于它也是一个可靠的传输协议,但它还提供消息边界、传输级别多宿(multihoming)支持以及将头端阻塞(head of-lie blocking)减少到最小的一种方法

TCP的某些特性一旦理解,就很容易编写健壮的客户和服务器程序,也很容易使用诸如netstat等普遍可用的工具来调试客户和服务器程序。本章将阐述以下相关主题: TCP的三路握手、TCP的连接终止序列和TCP的TIME _WAIT状态,SCTP的四路握手和SCTP的连接终止,加上由套接字层提供的TCP、UDP和SCTP缓冲机制,等等。

  1. 总图

虽然协议族被称为“TCP/IP", 但除了TCP和IP这两个主要协议外,还有许多其他成员。图2-1展示了这些协议的概况。

图2-1中同时展示了IPv4和IPv6,从右向左查看该图,最右边的5个网络应用在使用IPv6;我们将在第3章中随sockaddr_in6结构讲解AE_ INET6常值。 随后的6个网络应用使用IPv4。

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

图2-1中还标明traceroute程序使用两种套接字: IP套接字用于访问IP,ICMP套接字用于访问ICMP。

下面我们讲解一下图2-1中的每一个协议框。

IPv4

网际协议版本4 ( Internet Protocol version 4)。IPv4 (通常称之为IP)自20世纪80年代早期以来一-直是网际协议族的主力协议。它使用32位地址(见A.4节)。IPv4给TCP、UDP、SCTP、 ICMP和IGMP提供分组递送服务。

IPv6

网际协议版本6 ( Internet Protocol version 6)。IPv6是在20世纪90年代中期作为IPv4的-一个替代品设计的。其主要变化是使用128位更大地址(见A.5节)以应对20世纪90年代因特网的爆发性增长。IPv6给TCP、 UDP、 SCTP和ICMPv6提供分组递送服务。当无需区别IPv4和IPv6时,我们经常把“IP”一词作为形容词使用,如IP层、 IP地址等。

TCP

传输控制协议( Transmission Control Protocol)。TCP是一个面向连接的协议,为用户进程提供可靠的全双工字节流。TCP套接字是-种流套接字( stream

socket)。TCP关心确认、超时和重传之类的细节。大多数因特网应用程序使用

TCP。注意,TCP既可以使用IPv4,也可以使用IPv6。

UDP

用户数据报协议(User Datagram Protocol)。UDP是-一个无连接协议。UDP套接字是- -种数据报套接字(datagram socket)。UDP数据报不能保证最终到达它们的目的地。与TCP一样,UDP既可以使用IPv4,也可以使用IPv6。

SCTP

流控制传输协议(Stream Control Transmission Protocol)。SCTP是一一个提供可靠全双工关联的面向连接的协议,我们使用“关联”- -词来指称SCTP中的连接,因为SCTP是多宿的,从而每个关联的两端均涉及一组IP地址和一 -个端口 号。SCTP提供消息服务,也就是维护来自应用层的记录边界。与TCP和UDP

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值