UNIX网络编程笔记(1)—传输层协议

本文详细介绍了UNIX网络编程中传输层的各种协议,包括TCP/IP协议概述,重点讲解了TCP、UDP、SCTP的特点和工作原理。TCP提供了面向连接的可靠性服务,而UDP则是无连接的。此外,还探讨了SCTP的多宿和可靠性特性,以及TCP的连接建立和终止过程。
摘要由CSDN通过智能技术生成

开始学习网络编程的经典《UNIX网络编程》(第3版)作为研究生阶段的副本练习吧,厚厚一本书,希望能坚持看下去,坚持做些笔记。


1.TCP/IP协议概述

IPv4

网际协议版本4(Internet Protocol version 4),32位地址,为TCP、UDP、SCTP、ICMP和IGMP提供分组递送服务。

IPv6

网际协议版本6(Internet Protocol version 6)。128位地址,为TCP、UDP、SCTP和ICMPv6提供分组递送服务。

TCP

传输控制协议(Transmission Control Protocol)。面向连接的传输层协议,提供可靠的全双工字节流,使用流套接字(stream socket)。

UDP

用户数据报协议(User Datagram Protocol)。UDP是一个无连接的传输层协议,使用数据报套接字(datgram socket)。

SCTP

流控制传输协议(Stream Control Transmission Protocol)。是可靠全双工关联的面向连接的传输层协议。SCTP是多宿的,每个关联的两端均涉及一组IP地址和一个端口号。这里多宿的概念简单理解就是多个网卡。

ICMP协议

网际控制消息协议(Internet Control Message Protocol)。ICMP处理在路由器和主机之间流通的错误和控制信息。这些消息由TCP/IP网络支持软件本身(而不是用户进程)产生和处理,例如ping和traceroute使用ICMP。

IGMP协议

网际组管理协议(Internet Group Management Protocol)。IGMP用于多播。

ARP(Address Resolution Protocol)和RARP(Reverse Address Resolution Protocol)

ARP地址解析协议把一个IPV4映射成一个硬件地址(以太网地址)。RARP反向地址解析协议把一个硬件地址映射成一个IPv4地址。


2.用户数据报协议(UDP)

UDP是无连接不可靠的传输层协议,着些主要体现在:
当用户进程往一个UDP套接字写入消息,消息随后被封装到一个UDP数据报(每个数据报都会有一个长度记录被接收端应用程序获取),进而又被封装到一个IP数据报,然后发往目的地,但是:UDP不保证数据报会到达其最终目的地,不保证各个数据报到达的先后顺序,也不保证数据报只到达一次


3.传输控制协议(TCP)

TCP向应用程序提供面向连接的可靠性服务

面向连接体现在:TCP客户端要首先与某个服务器建立一个连接,然后再夸该连接交换数据,最后终止连接。

可靠性体现在:TCP不保证数据一定会被对方端点接收,它提供的是数据的可靠递送(等待确认并自动重传)和故障的可靠通知(放弃重传或中断连接)。在数次重传失败后,TCP才会放弃,如此在尝试发送数据所花的时间一般为4~10分钟。

TCP具有的一些能力

  1. 可以动态估算客户和服务器之间的往返时间(round-trip time RTT),以便知道等待一个确认需要多少时间。例如RTT在局域网中几毫秒,在广域网则要数秒。

  2. TCP对所发的数据进行排序:即在每个分节(TCP传递给IP的数据单元)的内部给每个字节关联一个序号,这就可以保证:在应用接收数据之前对非顺序到达的数据进行排序、并且对对端的重复数据进行丢弃。

  3. TCP提供流量控制(flow control),流量控制确保发送端发送的数据不会使得接收端缓冲区溢出:当发送数据太快,而接收端来不及接收时,为了保证数据不丢失,必须协调好双方通信的节奏,通告窗口就起到了这样的作用:当接收来自发送端的数据时,窗口大小减小,当接收端从缓冲区读走数据时,窗口就变大;当窗口为0时,说明TCP对应某个套接字的缓冲区已满,此时它必须等待对端从缓冲区读取数据和不为0的通告窗口消息的到来。

  4. TCP连接是全双工的(UDP也可以是全双工),也就是说在一个给定的连接上,应用可以在任何时刻在近处的两个方向上既发送数据又接收数据,需要的话也可以改成单工连接。


4.流控制传输协议(SCTP)

这个协议以前没听过,今天也学习一蛤。
SCTP支持多宿,与TCP相比提供两个IP地址之间的通信,SCTP可以提供两个系统之间的通信:一个端点可以有冗余的网络连接,每个网络又可以有各自接入因特网基础设施的连接,这样,乳沟某个网络或者通路发生故障,SCTP可以切换到使用已与该关联相关的另一个地址来规避故障。

SCTP是面向消息的。它提供各个记录的按序递送服务,与UDP记录数据报长度一样,SCTP也会写入每条记录的长度随数据一道传递给接收端应用。
PS:UDP是面向数据报,TCP是面向字节流的。

与TCP不同的是,当TCP字节丢失,将阻塞其后数据的递送,而SCTP则不会阻塞。


5.TCP的连接和终止

三路握手

我们知道TCP连接要经过三路握手,实际将发生下面这些情况:

  1. 服务器server端通过socket(创建套接字&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值