太厉害了,总算有人能把TCP/IP合同讲的明明白白了!
从字面意义上讲,有人可能会觉得TCP/IP是指TCP和IP两种合同。实际生活当中有时也确实就是指这两种合同。但是在好多情况下,它只是借助IP进行通讯时所必须用到的合同群的合称。具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP合同。
一图看完本文
一、计算机网路体系结构分层
计算机网路体系结构分层
计算机网路体系结构分层
不难看出,TCP/IP与OSI在分层模块上稍有区别。OSI参考模型重视“通信合同必要的功能是哪些”,而TCP/IP则更指出“在计算机上实现合同应当开发哪种程序”。
二、TCP/IP基础
1.TCP/IP的具体含意
从字面意义上讲,有人可能会觉得TCP/IP是指TCP和IP两种合同。实际生活当中有时也确实就是指这两种合同。但是在好多情况下linux中tcp/ip协议实现及嵌入式应用,它只是借助IP进行通讯时所必须用到的合同群的合称。具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP合同。她们与TCP或IP的关系紧密,是互联网必不可少的组成部份。TCP/IP一词亦称这种合同linux操作系统论文,因而,有时称作TCP/IP为网际合同群。
互联网进行通讯时,须要相应的网路合同,TCP/IP本来就是为使用互联网而开发制订的合同族。为此,互联网的合同就是TCP/IP,TCP/IP就是互联网的合同。
网际合同群
2.数据包
包、帧、数据包、段、消息
以上五个术语都拿来叙述数据的单位,大致分辨如下:
每位分层中,就会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及合同相关信息。一般,为合同提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被觉得是本层的数据。
数据包首部
网路中传输的数据包由两部份组成:一部份是合同所要用到的首部,另一部份是上一层传过来的数据。首部的结构由合同的具体规范详尽定义。在数据包的首部,明晰标注了合同应当怎样读取数据。反过来说,看见首部,也就才能了解该合同必要的信息以及所要处理的数据。包首部如同协议的脸。
3.数据处理流程
右图以用户a向用户b发送短信为反例:
数据处理流程
①应用程序处理
首先应用程序会进行编码处理,这种编码相当于OSI的表示层功能;
编码转化后,电邮不一定马上被发送出去,这些何时构建通讯联接何时发送数据的管理功能,相当于OSI的会话层功能。
②TCP模块的处理
TCP依照应用的指示,负责构建联接、发送数据以及断掉联接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现这一功能,须要在应用层数据的后端附加一个TCP首部。
③IP模块的处理
IP将TCP传过来的TCP首部和TCP数据合上去当作自己的数据,并在TCP首部的后端加上自己的IP首部。IP包生成后,参考路由控制表决定接受此IP包的路由或主机。
④网络插口(以太网驱动)的处理
从IP传过来的IP包对于以太网来说就是数据。给那些数据附加上以太网首部并进行发送处理,生成的以太网数据包将通过化学层传输给接收端。
⑤网络插口(以太网驱动)的处理
主机收到以太网包后,首先从以太网包首部找到MAC地址判定是否为发送给自己的包,若不是则遗弃数据。
假如是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如IP、ARP等。这儿的反例则是IP。
⑥IP模块的处理
IP模块接收到数据后也做类似的处理。从包首部中判定此IP地址是否与自己的IP地址匹配,假如匹配则依照首部的合同类型将数据发送给对应的模块,如TCP、UDP。这儿的反例则是TCP。
另外吗,对于有路由器的情况,接收端地址常常不是自己的地址,此时,须要利用路由控制表,在调查应当送往的主机或路由器以后再进行转发数据。
⑦TCP模块的处理
在TCP模块中,首先会计算一下校准和,判定数据是否被破坏。之后检测是否在根据序号接收数据。***检测端标语,确定具体的应用程序。数据被完整地接收之后,会传给由端标语辨识的应用程序。
⑧应用程序的处理
接收端应用程序会直接接收发送端发送的数据。通过解析数据,展示相应的内容。
三、传输层中的TCP和UDP
TCP/IP中有两个具有代表性的传输层合同,分别是TCP和UDP。
1.端标语
数据链路和IP中的地址,分别指的是MAC地址和IP地址。后者拿来辨识同一链路中不同的计算机,前者拿来辨识TCP/IP网路中互连的主机和路由器。在传输层也有这种类似于地址的概念,那就是端标语。端标语拿来辨识同一台计算机中进行通讯的不同应用程序。因而,它也被称为程序地址。
1.1按照端标语辨识应用
一台计算机上同时可以运行多个程序。传输层合同正是借助那些端标语辨识本机中正在进行通讯的应用程序,并确切地将数据传输。
通过端标语辨识应用
1.2通过IP地址、端标语、协议号进行通讯辨识
通过端标语、IP地址、协议号进行通讯辨识
①和②的通讯是在两台计算机上进行的。它们的目标端标语相同,都是80。这儿可以按照源端标语加以分辨。
③和①的目标端标语和源端标语完全相同linux系统应用,但它们各自的源IP地址不同。
据悉,当IP地址和端标语全都一样时,我们还可以通过合同号来分辨(TCP和UDP)。
1.3端标语的确定
1.4端标语与合同
2.UDP
3.TCP
3.1三次握手(重点)
下边来瞧瞧三次握手的流程图:
三次握手
3.2四次挥手(重点)
下边来瞧瞧四次挥手的流程图:
四次挥手
里面是一方主动关掉,另一方被动关掉的情况,实际中都会出现同时发起主动关掉的情况。
具体流程如右图:
同时挥手
3.3通过序列号与确认应答提升可靠性
序列号和确认应答
3.4重发超时的确定
3.5以段为单位发送数据
3.6借助窗口控制提升速率
3.7滑动窗口控制
滑动窗口
3.8窗口控制中的重发控制
在使用窗口控制中,出现丢包通常分为两种情况:
①确认应答无法返回的情况。在这些情况下,数据早已抵达对端,是不须要再进行重发的,如右图:
部份确认应答遗失
②某个报文段遗失的情况。接收主机倘若收到一个自己应当接收的序列号以外的数据时,会针对当前为止收到数据返回确认应答。如右图所示,当某一报文段遗失后,发送端会仍然收到序号为1001的确认应答,为此,在窗口比较大,又出现报文段遗失的情况下,同一个序列号的确认应答将会被重复不断地返回。而发送端主机假如连续3次收到同一个确认应答linux中tcp/ip协议实现及嵌入式应用,都会将其对应的数据进行重发。这些机制比之前提到的超时管理愈加高效,因而也被称为高速重发控制。
高速重发控制
四、网络层中的IP合同
1.IP地址
1.1IP地址概述
1.2IP地址由网路和主机两部份标示组成
IP地址的主机标示
IP地址的网路标示
1.3IP地址的分类
1.4广播地址
1.5IP多播
1.6子网网段
2.路由
2.1IP地址与路由控制
路由控制表与IP包发送
3.IP发包与组包
3.1路径MTU发觉
4.IPv6
4.1IPv6的特征
4.2IPv6中IP地址的标记方式
4.3IPv6地址的结构
4.4全局时隙地址
全局时隙地址
4.5链路本地时隙地址
链路本地时隙地址
4.6惟一本地地址
惟一本地地址
4.7IPv6分段处理
4.8IP首部(暂略)
5.IP合同相关技术
5.1DNS
5.2ARP
5.3ICMP
5.4DHCP
5.5NAT
5.6IP隧洞
夹着IPv4网路的两个IPv6网路
5.6IP隧洞
[外链图片转存中…(img-hTZDhQzJ-99)]
夹着IPv4网路的两个IPv6网路