【UNIX网络编程】第二期 传输层:TCP、UDP、SCTP
2013-03-07 21:13
204 查看
一、概述
1.TCP、UDP、SCTP都是传输层协议,它们都调用网络层协议IP(IPv4/IPv6)。
UDP:简单、不可靠的数据包协议
TCP:复杂、可靠的字节流协议
SCTP类似TCP,可靠,更加复杂。
2.这些协议提供的服务;弄清协议处理什么;应用进程中又需要处理什么
二、总图
●IGMP(网际组管理协议)IGMP用于多播,在IPv4中可选
●ARP(IP-->MAC)用于广播网络,点对点网络不需要
●ICMPv6=ICMPv4+IGMP+ARP
●BPF(BSD分组过滤器) 提供对数据链路层的访问,在Berkeley内核中可找到
●DLPI(DL提供者接口) 提供对数据链路层的访问,在SVR4内核中可找到
三、用户数据包协议(UDP)
过程:向UDP套接字写入一个消息-->消息被封装到一个UDP数据包-->UDP数据包被封装到一个IP数据包,发送
*不保证送到目的地,不保证按顺序,不保证不重复【这个快递公司可以倒闭了吧喂…】
UDP数据包有自己的长度,这点要注意与TCP区别(TCP是字节流协议,无边界)
*UDP提供无连接服务
四、传输控制协议(TCP)
TCP的周到服务:
1.提供客户和服务器之间的连接(建立连接-->传输数据-->终止连接)
2.可靠性(忠犬…【滚!!!】)确认&超时自动重传
**TCP不能保证100%递送数据。如果重传一直失败,就通知用户(放弃重传并中断连接)。TCP的可靠性说的是提供的是数据的可靠递送和故障的可靠通知。
3.计算RTT(往返时间),确定等待时间
4.对数据包进行排序(通过序列号排序,相同的序列号意味着重复包,丢弃)
5.流量控制(接收窗口)
6.TCP是全双工的(UDP也可是全双工的)
五、流控制传输协议(SCTP)
SCTP在客户和服务器之间提供关联,并像TCP那样提供可靠性、排序、流量控制和全双工的数据传送。“关联”是因为SCTP支持多宿。
SCTP是面向消息的。
SCTP能够在所连接的端点间提供多个流,每个流独立地、可靠地按序递送消息。
SCTP提供多宿特性,使得单个SCTP端点支持多个IP地址。一个端点可能有多个冗余的网络连接。狡兔三窟可以避免网络通路发生故障时的故障。
六、TCP连接的建立和终止
1.三路握手
2.常用的TCP选项
(1)MSS选项(Max Segment Size)
作用:发送SYN的TCP一端说明它能接受的段大小
*套接字选项:TCP_MAXSEG
(2)窗口规模选项(图片来源:第五版Computer Network)
16位,TCP能够通告对端的最大窗口大小是65535。这个选项制定TCP header中的window size必须扩大(即左移)的位数(0~14),因此所提供的最大窗口接近1GB,不过前提是它的两个端系统都必须支持这个选项。
套接字选项:SO_RCVBUF
(3)时间戳选项
可以防止数据包重复。
3.TCP连接终止
4.TCP状态转换图
TCP为一个连接定义了11中状态,并且TCP规定了状态转换的规则。这些状态可以使用netstat显示。
5.观察分组
##从TCP转化成UDP,将丧失TCP提供的全部可靠性,迫使可靠服务的一大堆细节从传输层(TCP)转移到UDP应用进程。另外,UDP还得收拾拥塞控制这个烂摊子…但是,仍旧有许多网络应用是由UDP构建的,主要就是因为可以避免TCP建立连接和终止连接的开销【正所谓…牡丹花下死,做鬼也风流…被拖走揍死】
七、TIME_WAIT状态
主动关闭的一端会经历TIME_WAIT状态。持续时间一般为2MSL(Max Segment lifetime,最长段寿命)。
TCP必须处理那些因路由异常而重复的分组。
TIME_WAIT状态有两个存在的理由:
(1) 可靠地实现TCP全双工连接的终止;
(2) 允许老的重复段在网络中消逝(咳,就是自然死亡啦…,因为要防止诈尸(就是会有“连接的化身”这种东西出现(IP、Port跟之前一样),然后之前的端在连接终止之后再现))
八、SCTP关联的建立和终止
1.四路握手
2.关联终止
3.SCTP状态转换图
4.观察分组
5.SCTP选项
SCTP使用参数和块方便增设可选特性。
九、端口号
小舟一直觉得大段的文字描述不如一幅图来得清晰,所以每到期末考试,别人抱佛脚都是狂看书,但是我却是狂画图【狂汗,虽然Po主平常都是非常认真地在念书,但是总是有种平常复习但考到临头还是一片空白的感觉】,而且效果还不错。正所谓前人种树后人乘凉,前人画图后人剽窃,就是这个道理。请看图:
保留端口 注册端口 自由端口(临时)
(root)
##套接字对
TCP连接四元组:源IP,源port,目的IP,目的port
SCTP连接四元组:一组源IP,一个源port,一组目的IP,一个目的port
一个四元组通常被称为一个socket。
十、TCP端口与并发服务器
并发服务器中主服务器循环并发服务器中主服务器循环通过派生一个子进程来处理每个新的连接。不同的连接通过套接字对来区别。
十一、缓冲区大小及其限制
影响IP数据报大小的限制:MTU
MTU
许多网络都有一个硬件规定的MTU。两个主机间的路径总最小的MTU称为路径MTU。1500B的以太网MTU是当今常见的路径MTU。
从网络接口送出的IP数据包,如果大小超过相应的链路MTU,则被分片。
#IPv4的header中的DF位(不分片位)置1,则主机和路由器均不能对它分片。如果数据包大于MTU,则报错。
最小重组缓冲区大小
IP协议的任何实现都必须保证支持的最小数据报大小。(IPv4 576B,IPv6 1500B)
MSS(Max Segment Size)最大分节大小
一般定义为MTU-(TCP header+IP header的固定长度)MTU发现功能
避免分片和重组
1.TCP输出
##TCP必须为发送的数据保留一个副本,直到它被对端确认。
2.UDP输出
UDP是无连接的,不必保存应用程序数据的一个副本。
3.SCTP输出
十二、标准因特网服务
十三、常见因特网应用的协议使用
十四、感言
第二期终于生出来了。三天完成第二章的学习与整理。【如果我去做剧就好了,我这么勤奋,噗…】唉,说来还是修过了Computer Network的,可是我现在就是一知半解的代言人啊…很多问题似是而非,也记得不是特别清楚。就借这个机会复习复习吧。噗,PS,今天发稿之日正值女生节,班里的男神代表们,被编好号送上宿舍门,附赠一副扑克牌,女生可以"翻牌子",男生任调戏啊任调戏...呵呵,大学阶段的温馨回忆吧,mark一个...
1.TCP、UDP、SCTP都是传输层协议,它们都调用网络层协议IP(IPv4/IPv6)。
UDP:简单、不可靠的数据包协议
TCP:复杂、可靠的字节流协议
SCTP类似TCP,可靠,更加复杂。
2.这些协议提供的服务;弄清协议处理什么;应用进程中又需要处理什么
二、总图
●IGMP(网际组管理协议)IGMP用于多播,在IPv4中可选
●ARP(IP-->MAC)用于广播网络,点对点网络不需要
●ICMPv6=ICMPv4+IGMP+ARP
●BPF(BSD分组过滤器) 提供对数据链路层的访问,在Berkeley内核中可找到
●DLPI(DL提供者接口) 提供对数据链路层的访问,在SVR4内核中可找到
三、用户数据包协议(UDP)
过程:向UDP套接字写入一个消息-->消息被封装到一个UDP数据包-->UDP数据包被封装到一个IP数据包,发送
*不保证送到目的地,不保证按顺序,不保证不重复【这个快递公司可以倒闭了吧喂…】
UDP数据包有自己的长度,这点要注意与TCP区别(TCP是字节流协议,无边界)
*UDP提供无连接服务
四、传输控制协议(TCP)
TCP的周到服务:
1.提供客户和服务器之间的连接(建立连接-->传输数据-->终止连接)
2.可靠性(忠犬…【滚!!!】)确认&超时自动重传
**TCP不能保证100%递送数据。如果重传一直失败,就通知用户(放弃重传并中断连接)。TCP的可靠性说的是提供的是数据的可靠递送和故障的可靠通知。
3.计算RTT(往返时间),确定等待时间
4.对数据包进行排序(通过序列号排序,相同的序列号意味着重复包,丢弃)
5.流量控制(接收窗口)
6.TCP是全双工的(UDP也可是全双工的)
五、流控制传输协议(SCTP)
SCTP在客户和服务器之间提供关联,并像TCP那样提供可靠性、排序、流量控制和全双工的数据传送。“关联”是因为SCTP支持多宿。
SCTP是面向消息的。
SCTP能够在所连接的端点间提供多个流,每个流独立地、可靠地按序递送消息。
SCTP提供多宿特性,使得单个SCTP端点支持多个IP地址。一个端点可能有多个冗余的网络连接。狡兔三窟可以避免网络通路发生故障时的故障。
六、TCP连接的建立和终止
1.三路握手
2.常用的TCP选项
(1)MSS选项(Max Segment Size)
作用:发送SYN的TCP一端说明它能接受的段大小
*套接字选项:TCP_MAXSEG
(2)窗口规模选项(图片来源:第五版Computer Network)
16位,TCP能够通告对端的最大窗口大小是65535。这个选项制定TCP header中的window size必须扩大(即左移)的位数(0~14),因此所提供的最大窗口接近1GB,不过前提是它的两个端系统都必须支持这个选项。
套接字选项:SO_RCVBUF
(3)时间戳选项
可以防止数据包重复。
3.TCP连接终止
4.TCP状态转换图
TCP为一个连接定义了11中状态,并且TCP规定了状态转换的规则。这些状态可以使用netstat显示。
5.观察分组
##从TCP转化成UDP,将丧失TCP提供的全部可靠性,迫使可靠服务的一大堆细节从传输层(TCP)转移到UDP应用进程。另外,UDP还得收拾拥塞控制这个烂摊子…但是,仍旧有许多网络应用是由UDP构建的,主要就是因为可以避免TCP建立连接和终止连接的开销【正所谓…牡丹花下死,做鬼也风流…被拖走揍死】
七、TIME_WAIT状态
主动关闭的一端会经历TIME_WAIT状态。持续时间一般为2MSL(Max Segment lifetime,最长段寿命)。
TCP必须处理那些因路由异常而重复的分组。
TIME_WAIT状态有两个存在的理由:
(1) 可靠地实现TCP全双工连接的终止;
(2) 允许老的重复段在网络中消逝(咳,就是自然死亡啦…,因为要防止诈尸(就是会有“连接的化身”这种东西出现(IP、Port跟之前一样),然后之前的端在连接终止之后再现))
八、SCTP关联的建立和终止
1.四路握手
2.关联终止
3.SCTP状态转换图
4.观察分组
5.SCTP选项
SCTP使用参数和块方便增设可选特性。
九、端口号
小舟一直觉得大段的文字描述不如一幅图来得清晰,所以每到期末考试,别人抱佛脚都是狂看书,但是我却是狂画图【狂汗,虽然Po主平常都是非常认真地在念书,但是总是有种平常复习但考到临头还是一片空白的感觉】,而且效果还不错。正所谓前人种树后人乘凉,前人画图后人剽窃,就是这个道理。请看图:
保留端口 注册端口 自由端口(临时)
(root)
##套接字对
TCP连接四元组:源IP,源port,目的IP,目的port
SCTP连接四元组:一组源IP,一个源port,一组目的IP,一个目的port
一个四元组通常被称为一个socket。
十、TCP端口与并发服务器
并发服务器中主服务器循环并发服务器中主服务器循环通过派生一个子进程来处理每个新的连接。不同的连接通过套接字对来区别。
十一、缓冲区大小及其限制
影响IP数据报大小的限制:MTU
MTU
许多网络都有一个硬件规定的MTU。两个主机间的路径总最小的MTU称为路径MTU。1500B的以太网MTU是当今常见的路径MTU。
从网络接口送出的IP数据包,如果大小超过相应的链路MTU,则被分片。
主机对产生的IP数据包 | 路由器对转发的IP数据包 | |
IPv4 | √ | √ |
IPv6 | √ | X |
最小重组缓冲区大小
IP协议的任何实现都必须保证支持的最小数据报大小。(IPv4 576B,IPv6 1500B)
MSS(Max Segment Size)最大分节大小
一般定义为MTU-(TCP header+IP header的固定长度)MTU发现功能
避免分片和重组
1.TCP输出
##TCP必须为发送的数据保留一个副本,直到它被对端确认。
2.UDP输出
UDP是无连接的,不必保存应用程序数据的一个副本。
3.SCTP输出
十二、标准因特网服务
十三、常见因特网应用的协议使用
十四、感言
第二期终于生出来了。三天完成第二章的学习与整理。【如果我去做剧就好了,我这么勤奋,噗…】唉,说来还是修过了Computer Network的,可是我现在就是一知半解的代言人啊…很多问题似是而非,也记得不是特别清楚。就借这个机会复习复习吧。噗,PS,今天发稿之日正值女生节,班里的男神代表们,被编好号送上宿舍门,附赠一副扑克牌,女生可以"翻牌子",男生任调戏啊任调戏...呵呵,大学阶段的温馨回忆吧,mark一个...
相关文章推荐
- UNIX网络编程--传输层:TCP、UDP、SCTP(二)
- Unix网络编程:第二章 传输层:TCP、UDP和SCTP
- UNIX网络编程笔记 第二章 传输层TCP、UDP和SCTP
- UNIX网络编程---传输层:TCP、UDP、SCTP(二)
- UNIX网络编程---传输层:TCP、UDP、SCTP(二)
- unix网络编程第2章:传输层:TCP,UDP和SCTP
- Unix网络编程二:传输层:TCP、UDP、SCTP
- 传输层:TCP、UDP和SCTP
- UNIX网络编程卷1:套接字联网API-第2章:传输层 TCP/UDP和SCTP
- UNP总结 Chapter 2 传输层:TCP、UDP和SCTP
- 第二章 传输层:TCP、UDP和SCTP(2)—TCP连接的建立和终止
- unp 第二章 传输层 TCP UDP SCTP
- 第2章 传输层:TCP、UDP和SCTP
- 第二章 传输层:TCP、UDP和SCTP
- UNIX网络编程学习笔记(1) 传输层:TCP UDP STCP
- 第二章 传输层:TCP、UDP和SCTP(3)—端口号
- 2、传输层:TCP、UDP和SCTP
- UNPv13:#第2章#传输层:TCP、UDP和SCTP
- 传输层:TCP UDP SCTP
- UNIX网络编程卷一 第二章 传输层TCP UDP SCTP