https://segmentfault.com/q/1010000004953614/a-1020000004954351
https://www.baidu.com/s?wd=udt%E5%8D%8F%E8%AE%AE%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D&rsv_spt=1&rsv_iqid=0x858c83880000a12c&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=3&rsv_sug1=3&rsv_sug7=100&rsv_t=77ddTcU0I%2F66ef3d1WxGV29iQ6Ih0erc3bGMbLp3MvXxTfZcdn5G4cnUOmioUVJClGce
http://blog.csdn.net/yclzh0522/article/details/7019491
https://www.baidu.com/s?wd=udt%E6%98%AF%E5%9F%BA%E4%BA%8ETCP%E8%BF%98%E6%98%AF%E5%9F%BA%E4%BA%8EUDP&rsv_spt=1&rsv_iqid=0x85814a910000d8ee&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=9&rsv_sug1=3&rsv_sug7=100&rsv_t=5ca5gVNn387EZ9egO32ONHCflu6R6K3YpyUFUU25fI5tbR1CIH2%2FHTlH4MjYIGKrXJr%2F&rsv_sug2=0&inputT=15914&rsv_sug4=15915
http://baike.baidu.com/link?url=RTLn0jsK7E6_ly7Vn2iIramToKLYXPY3rEsJScL5-WaUuAqIXnH9whPHoWCnGrp1zsBVsogqV3sspxTPtEZwsK
http://baike.baidu.com/item/%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6
http://baike.baidu.com/item/%E6%8B%A5%E5%A1%9E%E7%AA%97%E5%8F%A3
http://baike.baidu.com/item/%E9%80%9A%E4%BF%A1%E5%AD%90%E7%BD%91
http://baike.baidu.com/item/%E9%80%9A%E4%BF%A1%E5%AD%90%E7%BD%91
https://www.baidu.com/s?wd=udp%E5%88%86%E5%8C%85%E7%BB%84%E5%8C%85&rsv_spt=1&rsv_iqid=0xca2fb99e0000a6cf&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=4&rsv_sug1=4&rsv_sug7=100&rsv_t=8d21fhGDbbsiqKlV418Q%2BJbT0Oej3AdBlRaT5wlYIErWbDZVgMlXBCC05s40RT%2FVOm0w&rsv_sug2=1&prefixsug=udp%25E5%2588%2586%25E5%258C%2585&rsp=1&inputT=4409&rsv_sug4=4410
http://blog.csdn.net/cherish_2012/article/details/41681853
1、网络协议层次分类:
1、链路层;
2、网络层;
3、运输层;
4、应用层;
1、链路层:
有时也称为数据链路层或网络接口层, 通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡. 它们一起处理与电缆的物理接口细节;
2、网络层:
处理分组在网络中的活动, 在TCP/IP协议族中, 网络层协议包括IP协议,ICMP协议以及IGMP协议;
3、运输层:
由于运输层提供了高可靠性的端到端的通信, 因此应用层可以忽略所有这些细节;
应用程序通常是一个用户进程, 而下面三层则一般在内核中执行;
顶层与下三层的一个关键区别是:
应用层关心的是应用程序的细节, 而不是数据在网络中的传输活动;
下三层对应用程序一无所知, 但他们要处理所有的通信细节;
2、TCP可靠:
TCP提供一种面向连接的、可靠的字节流服务:
TCP通过以下方式来提供可靠性:
1、应用数据被分割成 TCP认为最适合发送的数据块。
2、当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能;
及时收到一个确认,将重发这个报文段。
3、当TCP收到发自 TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,
通常将推迟几分之一秒;
4、既然TCP报文段作为 IP数据报来传输,而 IP数据报的到达可能会失序,因此 TCP报文段
的到达也可能会失序。如果必要, TCP将对收到的数据进行重新排序,将收到的数据以
正确的顺序交给应用层。
5、既然IP数据报会发生重复, TCP的接收端必须丢弃重复的数据。
3、TCP首部:
在TCP首部中有6个标志比特, 他们中的多个可以同时被设置为1.
|标志|含义|
|-|
|URG|紧急指针有效|
|ACK|确认序号有效|
|PSH|接收方应该尽快将这个报文段交给应用层|
|RST|重建连接|
|SYN|同步序号用来发起一个连接|
|FIN|发端完成发送任务|
- 1、每个TCP段都包含源端和目的端的端口号,用于寻找发端和首端应用进程. 这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接.
拥塞窗口:
发送端根据网络的拥塞程度所预设的一个大小值, 而这个值就是拥塞窗口.
源端在拥塞控制情况下一次最多能发送的数据包的数量.
发送方控制拥塞窗口的原则是: 只要网络没有出现拥塞, 拥塞窗口就再增大一些, 以便把更多的分组发送出去, 但只要网络出现拥塞, 拥塞窗口就减少一些, 以减少注入到网络中的分组数;
AIMD:
TCP/IP模型中, 属于运输层, 为了解决拥塞控制的一个方法, 即: 加性增, 乘性减.
Example:
当TCP发送方感受到端到端路径无拥塞时就线性的增加其发送速度, 当察觉到路径拥塞时就乘性减小其发送速度;
当TCP发送端收到ACK, 并且没有检测到丢包事件时, 拥塞窗口+1; 当TCP发送端检测到丢包事件时, 拥塞窗口/2.
拥塞控制:
拥塞现象:
拥塞现象是指到达通信子网网中某一部分的分组数量过多, 使得该部分网络来不及处理, 以致引起这部分乃至整个网络性能下降的现象. 严重时甚至会导致网络通信业务陷入停顿, 即出现死锁现象.
Example:
公路网中经常所见的交通拥挤一样, 当节假日公路网中车辆大量增加时, 各种走向的车流相互干扰, 使每辆车到达目的地的时间都相对增加(即延迟增加), 甚至有时在某段公路上车辆因堵塞而无法开动(即发生局部死锁);
网络的吞吐量与通信子网负荷有着密切的联系;
造成拥塞的原因:
1、多条流入线路有分组到达, 并需要同一输出线路, 此时, 如果路由器没有足够的内存来存放所有这些分组 , 那么分组就会丢失;
2、路由器的慢带处理器的缘故, 以至于难以完成必要的处理工作, 如缓冲区排队, 更新路由表等;
udt:
基于UDP的数据传输协议是一种互联网数据传输协议, UDT的主要目的是支持高速广域网上的海量数据传输, 而互联网上的标准数据传输协议TCP在高带宽长距离网络性能很差.
udt是面向连接的双向应用层协议. 它同时支持可靠的数据流传输和部分可靠的数据报传输.
由于UDT完全在UDP上实现, 它也可以应用在除了高速数据传输之外的其他应用领域, 例如点到点技术(p2p), 防火墙穿透, 多媒体数据传输等;
RTT:
往返延时, 在计算机网络中它是一个重要的性能指标, 表示从发送端发送数据开始, 到发送端收到来自接收端的确认, 总共经历的时延。
RTT由三部分构成:
1、链路的传播时间;
2、末端系统的处理时间;
3、路由器的缓存中的排队和处理时间;
路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化. 所以RTT的变化在一定程度上反映了网络拥塞程度的变化.
时延:
时延是指一个报文或分组从一个网络的一端传送到另一端所需要的时间;
时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
发送时延与传播时延是我们主要考虑的. 对于报文长度较大的情况, 发送时延是主要矛盾; 报文长度较小的情况, 传播时延是主要矛盾.
时延是指数据包第一个比特进入路由器到最后一个比特从路由器输出的时间间隔;
SSL(Secure Sockets Layer)安全套接字:
TLS与SSL在传输层对网络连接进行加密;
SSL用以保障在Internet上数据传输之安全, 利用数据加密技术, 可确保数据在网络上传输过程中不会被截取及窃听;
SSL协议分为两层:
1、SSL记录协议(SSL Record Protocol);
2、SSL握手协议(SSL Handshake Protocol);
SSL记录协议:
建立在可靠的传输协议之上, 为高层协议提供数据封装, 压缩, 加密等基本功能的支持;
SSL握手协议:
建立在SSL记录协议之上, 用于在实际的数据传输开始前, 通讯双方进行身份认证, 协商加密算法, 交换加密密钥等;
数据封装:
笼统的讲, 就是把业务数据映射到某个封装协议的净荷中, 然后填充对应协议的包头, 形成封装协议的数据包, 并完成速率适配.
数据封装的过程:
- 1、用户信息转换为数据, 以便在网络上传输;
- 2、数据转换为数据段, 并在发送方和接收方主机之间建立一条可靠的连接;
- 3、数据段转换为数据包或数据报, 并在报头中放上逻辑地址, 这样每一个数据包都可以通过互联网络进行传输;
- 4、数据包或数据段转换为帧, 以便在本地网络中传输. 在本地网段上, 使用硬件地址唯一标识每一台主机;
- 5、帧转换为比特流, 并采用数字编码和时钟方案;