TCP/IP 协议的工作流程

声明:主要内容总结于《鸟哥的LINUX私房菜-基础学习篇》,如有疑问以书本内容为准。

          网络节点之间的沟通是需要遵守协议的,理想而严谨的工作协议就是OSI七层协议,又因为OSI协议的过于严谨而导致程序撰写的相当不容易,因此实际生活中广泛使用的为简化了的协议: TCP/IP协议

              TCP/IP 协议的工作流程_第1张图片

               

        那么TCP/IP如何工作的了? 以连接Yahoo网站为例,整个流程如下:

  • 应用程序阶段: 打开浏览器,在浏览器地址栏中输入网址,按下“Enter”键。此时网址信息与相关数据会被浏览器包成一个数据,并向下传给TCP/IP的应用层。
  • 应用层:由应用层提供HTTP通信协议,将来自浏览器的数据封装起来,并给予一个应用层报头,再向传输层丢去。
  • 传输层:由于HTTP为可靠连接,因此将该数据丢入TCP封装内,并给予一个TCP封装的报头,向网络层丢去。
  • 网络层:将TCP数据封装到IP数据包内,再给予一个IP包头,向网络接口层丢去。
  • 网络接口层:若使用以太网络,IP会依据CSMA/CD标准,封装到MAC数据帧中,并给予MAC帧头,再转成比特流后,利用传输介质发送到远程主机上。

        等到Yahoo收到数据包后,再以相反方向拆解开来,然后交给对应层次进行分析,最后就让Yahoo的WWW服务器软件获知你所想要的数据,该服务器软件再根据你的要求取得正确资料,再依据上次流程,传递到你的手上。

        1、先说TCP/IP协议的传输层,这一层定义了发送端与接收端的连接技术(TCP、UDP技术),确保各个资料数据包可以正确无误的到达目的端。其中比较重要的几个概念:          

  • 传输层遵循的两个协议:面向连接的可靠的TCP协议,无连接的UDP协议。
  • 源端口/目标端口:IP数据包的传送主要是利用IP地址连接两端,但是连接到两端的什么地方呢? 就是端口(port)
  • TCP的三次握手:网络是双向的,所以不论服务器端或是客户端,都要通过一次SYN(要求建立连接)与ACK(收到数据后响应)来建立连接,所以要三次握手。

        第一次:客户端随机获取>1024的port, 发送TCP数据包:SYN=1, seq:10001(请求建立客户端到服务器的连接)

        第二次:服务器端有监听的端口接收到数据, 同时发送TCP数据包:ASK=1,ack=10002(发过去后让客户端知道服务器接收了由客户端发送的数据包,同意建立客户端到                            服务器的连接),  SYN=1,seq=20001(请求建立服务器到客户端的连接)        

        第三次:客户端收到服务器端ACK及ack确认之前数据包被正确接收,客户端同意建立服务器到客户端的连接,发送TCP数据包:ACK=1,ack=20002

        注:每次发送数据包进行握手时,同样也是按照TCP/IP数据传送流程进行传输。

  • UDP协议传送过程中,接收端接收到数据包后不会回复响应数据包(ASK)给发送端,所以不提供可靠的传输模式。
       鸟哥经常拿上课例子来给大家形象的介绍TCP与UDP的区别,比如介绍TCP时鸟哥叫一个同学起来,实际表演三次握手:

       鸟哥说:A同学你在不在?

       A同学说:我在!那鸟哥你在不在?

      鸟哥说:我也在。

      此时两人就确认彼此可以听到对方在说什么,即可靠连接。

      介绍UDP时,鸟哥说:“现在老师就是在进行UDP的传送,因为老师一直在讲,我也没有注意到你有没有听到,也不需要等待你的响应数据包。当然你没有听到老师讲啥,老师也不知道”。

        2、你传输层的TCP数据包或者UDP数据包不能直接凭空传到对方传输层,你要做好TCP/UDP的报头,丢给网络层。网络层会将TCP/UDP数据包封装到IP数据包内,再给予IP包头。其中几个比较重要的概念:

  • 网络层遵守的协议:IP协议,ICMP协议。
  • IP数据包中最重要的就是来源IP地址与目标IP地址,IP地址由32位组成。又可细分为Net_ID(网络号码)与Host_ID(主机号码)。
  • 同一网段内,主机IP有相同的Net_ID,且Host_ID不可重复,Host_ID全为0表整个网段的地址(Network IP),全1表示广播的地址(Broadcast IP),只要知道用户不可将Host_ID设置为全0或全1即可。
  • 相同物理网段的主机使用相同的网络IP范围,则这些主机可以通过CSMA/CD的功能直接在局域网内用广播进行网络的连接,即可以直接网卡对网卡传递数据(通过MAC数据帧)
  • 相同物理网段内,若两部主机使用不同的IP网段地址,需使用路由器进行沟通
  • PC01要发送IP数据包,主机分析自己的路由表,若目标IP与主机IP的Net_ID相同,则PC01直接通过局域网功能,将数据直接传送给目的主机;若不在同一网络,PC01分析路由表是否有相符合路由设置值,没有则将IP数据送到默认路由器中,默认路由器分析自己的路由表,将IP数据继续往正确的方向传。

       3、 事实上整个网络硬件上面传送的数据是数据帧(MAC),所以网络层的IP数据包会依据CSMA/CD标准,封装到MAC数据帧中,帧头会有目标与来源的网卡卡号,因此网卡卡号也叫MAC地址(硬件地址)。

  • 网络接口层遵守的协议:CSMA/CD
  • 每张以太网卡对应独一无二的卡号,即MAC地址
TCP/IP 协议的工作流程_第2张图片

                       图示:各数据包间相关性










你可能感兴趣的:(TCPIP协议)