TCP/IP协议族

简介:

1.数据链路层协议很多:以太网协议、PPP协议、SLIP协议、令牌环网协议、FDDI光纤网协议
            以太网帧结构 :协议要求data部分长度最少为46字节
-----------------------------------------------------------------------------------------
  |MACdesAddr(6B)|MACsrcAddr(6B)|protocal(2B)|    data   | crc
-----------------------------------------------------------------------------------------   
2.数据链路层的环回接口
传送给环回接口的IP数据不能在任何网络上出现。127.0.0.1和自身地址的IP包、广播和多播IP包都会在数据链路层中被送至环回接口,投递到输入队列
3.数据链路层的MTU:最大传输单元。以太网1500字节;802.3网络1492字节。大于MTU的网络层数据进入数据链路层之后会被分片。路径MTU:取决于数据通过的网络的最小MTU
4.网络层(IP层):不可靠-丢弃发生错误的IP包,然后发送一个ICMP消息报给源端。
5.IP数据包:(大端模式)
------------------------------------------------------------------
  |ver(4b)|headlen(4b)|TOS(4b)|packetlen(16b)  |
  |   flag(16b) | flag(3b) | segmentoffset(13b)       |     
  | TTL(8b)| protocal(8b) | headchecksum(16b)  |
  |                    srcIPAddress(32b)                         | 
  |                    desIPAddress(32b)                        |
  |                             options(?)                               |
  |                                  data                                    |
------------------------------------------------------------------
TOS服务类型:已经很少使用,最多同时置其中1位。4为分别代表:最小延时、最大吞吐量、最高可靠性、最小费用
TTL网络生存时间:最多经过的网络跳数。
6.主机和路由器的IP路由选择:如果目的主机或目的网络在自己的路由表中存在对应的下一条路由,则将该IP包转发给下一跳路由,否则将其转发给默认路由器。
7.子网寻址:B类地址类型为: 16b网络号+xb子网号+16-xb主机号。子网络号=IP地址&子网掩码再掉高16b去掉低16-xb
8.ARP地址解析协议:在局域网中发现IP地址对应的MAC地址,并提高IP地址<->MAC地址的高速缓存
工作过程:为找到IP地址对应的MAC地址,主机广播携带该IP地址的ARP包,收到该ARP包的所有主机判断该IP是否为自身IP,如果是返回携带自身MAC地址的ARP响应,否则静默;
收到该ARP包的所有路由器判断该IP地址在自己的高速缓存中是否存在下一条网络路由,如果有,返回自己的MAC地址,否则静默。
9.icmp报文的作用:有icmp报文的类型决定
10.UDP数据报格式:(8Bytes)
 ------------------------------------
  |  srcport(16b) | desport(16b)   |
  |packetlen(16b) | checksum(16b)  |     
  |              data              |
 ------------------------------------
11. 广播:广播对象为局域网中的所以主机,不能经过路由器。
    组播:将数据发送到internet中的一个主机组,可以经过路由器
广播时的MAC地址: FF:FF:FF:FF:FF:FF
    广播时的IP地址:netid1:netid2.255.255 指向B类网络的广播或指向所以子网的广播
                    netid1:128.1.2.15 指向B类子网的广播 (掩码255.255.255.240)
                    255.255.255.255 在本子网内广播
    多播时的MAC地址: 01:00:00:00:00:00
    多播IP地址:D类IP地址用于多播  1110+多播组ID(28b)  (224.0.0.0-239.255.255.255)
    多播将多播组地址的低23位映射到以太网MAC地址实现多播组地址到以太网地址的转换。由于还剩5位没有映射,所以这种映射是不唯一的,因此需要其他协议实现额外的数据过滤。
    IGMP组管理协议用于支持主机和路由器进行多播

12.tcp缓存中的流是没有边界的,接收方并不知道每次接收多少个数据。
   一个IP地址和一个端口被称为插口

13.tcp包结构
 ---------------------------------------------------------------------------------------------------
  |                           srcport(16b)       |        desport(16b)                                 |
  |                                             serial NO.(32b)                                                |
  |                                            ACK serial NO.(32b)                                        |
  |    headlen(4b)|saved(6b)|URG|ACK|PSH|RST|SYN|FIN| window(16)    |     
  |                     packgechecksum(16b)     |      URGpointer(16)                    |
  |                                                               data                                                 |
----------------------------------------------------------------------------------------------------      
序号用以标识tcp发送端发送的字节流;ACK为1时,应答序号有效,通知发送方该序号前面的字节流都已经收到,延迟确认算法下,不一定每接收一个tcp包都会有应答。这样可以节省流量。(应答序号=某个序号+1)
URG:紧急指针标记,当为1时,URGpointer有效
ACK:确认序号有效
PSH:发送方要求接收方将接收到的本帧数据以及缓存中的数据全部提交给接收进程,不要因等待额外的数据而在缓存中滞留。
RST:重建连接
SYN:同步标志用以发起一个连接
FIN:结束标志用以终止本端的发送。(半关闭)
window:该端的接收缓存大小,随着tcp将数据提交给应用层,缓存容量会变大。window可以用以进行流量控制。

MSS和MTU的区别:MTU指某个网络允许的最大传输单元,是一个固定值。MSS是IP包该端允许接收的最大分片长度,为了避免分片,可以使用MTU发现算法为MSS赋值。可以使用MSS进行流量控制。
MSS选项是TCP包头中的选项,只能出现在tcp连接的三次握手中。MSS通常为MSS=MTU-IP头-TCP头

14.tcp连接的建立与终止
连接过程要完成的工作:窗口的交换(每个tcp包都会携带window大小),MSS的通知。
连接建立的超时:发送端发送SYN信号后接收端无应答,将出现连接超时。这是发送端会重传同步信号。
TCP的半关闭:TCP允许连接的一端在结束发送后还能接收来自另一端数据的能力。发送FIN的一方将结束自己的发送,而另一方将结束接收。接收到FIN的一方可以认为另一方的数据已经发送完成,FIN相当于一个文件结束符。
TIME_WAIT状态:(2MSL等待状态,MSL是网卡内的一个参数)MSL是TCP发送方认为在该时间之内发送的TCP包还在网络的,超过这个时间认为包已经不在网络中(要么被丢弃要么被接收)。所以在发送一个数据后的2MSL时间内没有收到应答,就可以认为数据已经被丢弃了。MSL的取值从30s-120s,不同的版本实现不同
TIME_WAIT状态是tcp连接被关闭后,该插口处于等待被释放的状态,等待时间为2MSL。(防止旧的以该插口为目的地址的数据进入新的以该插口为连接的新连接)在2MSL等待状态期间,任何迟到的报文将被丢弃。
只有主动关闭连接的一方(发送FIN的一方)才会进入2MSL等待状态,被动关闭连接的一方不会进入2MSL等待状态.
复位报文段:RST报文段的作用有以下几种:
    a.连接不存在的服务器端口(未被服务器打开),则收到RST连接复位报文段。
    b.用以异常终止一个连接。有2个优点:发送方丢弃任何发送缓存数据立即发送RST报文段;接收方无须应答,立即关闭连接
    c.向不存在的连接发送数据,将收到RST复位报文段。(半打开:连接的一方已经失去连接而另一方并不知道)

15.TCP对交互数据和成块数据的处理算法是不同的。
16.TCP的交互数据流
    延迟确认算法:对某一个数据的确认,将在200ms内等待是否有数据需要捎带给等待应答的对方。
    Nagle算法:要求发送方发送一个报文段后,必须收到了ACK应答才能发送下一个报文段。优势是:可以在这段时间内收集应用层数据到发送缓存,打包发送,减少网络中包的数量,提供网络性能。
    Nagle算法常常受到延迟确认算法的影响而使得发送数据的速度很慢,产生发送时延。
    插口API用户可以使用TCP_NODELAY选项来关闭Nagle算法。
17.TCP的成块数据流
    滑动窗口协议:收发数据的双方通过窗口大小来告知对方自己当前剩余的缓存大小,不接收比自己缓存大的数据包,当window=0时,表示不能再接收数据,过一段时间,如果window变化,将会再发送一个额外的ACK数据包,通知对方自己的window大小。
    慢启动:慢启动实现了一个拥塞窗口congestion window(cwnd)参数:表示没有收到ACK应答前最多能发送的报文段个数。当tcp连接刚建立好时,cwnd被初始化为1,每收到一个ACK,cwnd就加1.慢启动属于发送方流量控制,滑动窗口协议属于接收方流量控制。
18.TCP的4大定时器
    每个连接都有4个独立的定时器。
    a.超时重传定时器:限定用于等待对方发送ACK的时间。
    b.坚持定时器:当接收方window关闭时(=0),发送方的坚持定时器开始启动,限定查询接收方window打开的时间。(避免接收方window打开的应答丢失,而使连接进入死锁)
    c.保活定时器:限定检测一个空闲连接的另一端何时崩溃或重启的时间。主要用于服务器端。
    d.2MSL等待定时器:限定一个连接处于TIME_WAIT状态的时间。



本文转自 a_liujin 51CTO博客,原文链接:http://blog.51cto.com/a1liujin/1699238,如需转载请自行联系原作者

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
125 4
|
缓存 网络协议 Linux
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
|
XML 存储 JSON
【面试题精讲】序列化协议对应于 TCP/IP 4 层模型的哪一层?
【面试题精讲】序列化协议对应于 TCP/IP 4 层模型的哪一层?
|
29天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
70 3
|
1月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
49 13
|
1月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
2月前
|
网络协议 算法 数据格式
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
154 3
|
2月前
|
XML JSON 网络协议
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
37 3
|
3月前
|
网络协议 网络架构 数据格式
TCP/IP基础:工作原理、协议栈与网络层
TCP/IP(传输控制协议/互联网协议)是互联网通信的基础协议,支持数据传输和网络连接。本文详细阐述了其工作原理、协议栈构成及网络层功能。TCP/IP采用客户端/服务器模型,通过四个层次——应用层、传输层、网络层和数据链路层,确保数据可靠传输。网络层负责IP寻址、路由选择、分片重组及数据包传输,是TCP/IP的核心部分。理解TCP/IP有助于深入掌握互联网底层机制。
534 2
|
7月前
|
网络协议 安全 网络安全
网络 (TCP/IP 四层协议中常见网络协议)
网络 (TCP/IP 四层协议中常见网络协议)
96 7