UNP卷一chapter2相关概念

以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。

1、TCP是一个提供面向连接、可靠、无差错、不丢失、不重复、按序到达的数据流传输协议。头部开销为20字节。全双工逻辑信道。支持的上层应用协议为Telnet、Ftp、SMTP、HTTP。


2、UDP是一个不面向连接,不可靠的数据报传输协议,尽最大努力交付。头部开销为8字节,支持一对一、一对多、多对一、多对多交互通信。支持的上层应用协议有NFS、SNMP、DNS。同时大多数即时通信也采用UDP协议。


3、SCTP是一个可靠、全双工、关联面向连接的协议。SCTP在客户和服务器之间提供关联,并像TCP那样给应用提供可靠性、排序、流量控制以及全双工的数据传送。SCTP是多宿,从而每个关联的两端均涉及一组IP地址和一个端口号,含来自应用动的记录边界(与TCP区别)。四次握手建立连接,见书上P38。三次挥手终止关联,SCTP通过放置验证标记值避免了TCP在Time_Wait状态下保持整个连接的做法,见P39。

4、端口号

    0~1023由IANA分配和控制

    1024~49151为已登记端口

    49152~65535是动态或私用端口(临时端口)

5、套接字对

扫描二维码关注公众号,回复: 962000 查看本文章

    本地IP/本地tcp端口号、外地IP/外地tcp端口号。

6、TCP端口号与并发服务器,此处主要涉及监听套接字listenfd及fork函数(具体在第四章详解)

7、缓冲区大小及限制

    a、IPv4,最大大小65535Byte;IPv6,最大大小65535+40=65575Byte;

    b、MTU(最大传输单元),以太网设为1500Byte;针对以太网,IPv4的MTU为68~1500Byte,IPv6的MTU为1280~1500Byte;

    c、path MTU是两主机间路径最小的MTU,往返的MTU时常不一致;

    d、是否需要分片,看IP数据报是否超过相应链路的MTU;

    e、IPv4首部若设置DF,则IP报文超过MTU也不会分片,此时将产生ICMPv4“destination unreachable fragmention needed but DF bit set”出错消息;

    f、IPv4最小重组缓冲区大小为576Byte,IPv6最小重组缓冲区大小为1500Byte;

    g、TCP的MSS(最大分片尺寸)=MTU-IP首部大小-TCP首部大小;

    h、SCTP选择基于到对端所有地址发现的最小路径MTU保持一个分片点。

8、TCP输出

    每个tcp的socket都有一个发送缓冲区,可利用SO_SNDBUF修改,write功能即将应用进程缓冲区的内容复制到套接字的发送缓冲区,write调用成功返回仅仅表示我们可以生新使用原来的应用进程缓冲区,并不表时对端的tcp或应用进程已接收到数据。tcp提取套接字发送缓冲区中的数据并发送给对端tcp,其过程基于tcp数据传送的所有规则。对端tcp必须确认收到的数据,伴随来自对端的ACK的不断到达,本端tcp至些才能从套接字发送缓冲区中丢弃已确认的数据。tcp必须为已发送的数据保留一个副本,直到它被对端确认为止。

9、UDP输出

    任何udp套接字都有发送缓冲区大小,但它仅仅是可写到该套接字的udp数据报的大小上限。如果一个应用进程写一个大于套接字发送缓冲区大小的数据报,内核将返回该进程一个EMSGSIZE错误。从写一个送套接字的write调用成功返回表示所写的数据报或其所有片段已被加入数据链路层的输出队列。(与tcp有很大区别)

10、SCTP输出

    其缓冲区设置及write调用与tcp一致。本端sctp必须等待SACK,在累积确认点超过已发送的数据后,才可以从套接字缓冲区中删除该数据。


猜你喜欢

转载自blog.csdn.net/tt_love9527/article/details/80070087
今日推荐