TCP/IP协议一家老小详细介绍介绍

网友投稿 340 2022-10-21


TCP/IP协议一家老小详细介绍介绍

一、 TCP/IP协议族

其中包括两个常用的协议:

ARP(地址解析协议)和RARP(逆地址解析协议)

它们实现了IP地址和机器物理地址(通常是MAC地址)直接的相互转换网络层:实现了数据包的选路和转发。WAN(广域网)通常使用众多分级的路由器来连接分散的主机或LAN(局域网),通信的两台主机一般不是直接相连而是通过多个中间节点(路由器)连接的。网络层的任务就是选择这些中间节点,来确定两台主机之间的通信路劲。同时,网络层对上层协议隐藏了网络拓扑的连接细节,使得在传输层和网络应用程序来看,通信双方是直接相连的。

其中包括两个主要的协议:

IP协议(核心)和ICMP协议(因特网控制报文协议)

IP协议很具数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器来转发,多次重复这个过程,直到到达目标主机。或由于发送失败而被丢弃(使用逐跳的方式确定通信路径)ICMP协议是IP协议的重要补充,主要用于检测网络连接,比如目标不可达和重定向,另一类是查询报文,用来查询网络信息,例如ping程序就是

传输层:主要包括三个:

TCP协议、UDP协议和SCTP协议

TCP(传输控制协议)协议:为应用层提供可靠的、面向连接的和基于流的服务。TCP协议使用超时重传,数据确认等方式来确保数据包被正确地发送至目的地,因此其是可靠的。使用双方需要先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接的状态、读写缓冲区、以及诸多定时器等。通信结束时,双方必须关闭连接和释放这些内核数据。其是基于流的,数据没有边界限制,它源源不断地从通信的一端流入另一端,可以逐个字节地向数据流中写数据,接收端也可以逐个字节地读出UDP(用户数据报协议)协议:它为应用层提供不可靠、无连接和基于数据报的服务。UDP协议无法保证数据从发送端正确地传到目的端。如果数据在中途丢失,或者目的端通过数据校验发现数据错误而将其丢弃,则UDP协议只是简单地通知应用程序发送失败。UDP协议是无连接的,通信双方不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收端的地址,接收端必须以该长度为最小单位将其 所有内容一次性读出,否则数据将被截断SCTP(流控制传输协议)协议:一种相对较新的传输层协议,它是为了在因特网上传输电话信号而设计的应用层:在用户空间实现,负责处理众多逻辑其中包括:ping(应用程序)、telnet协议、OSPF(开放最短路径优先)协议、DNS(域名服务)协议等应用层协议或程序,可能跳过传输层直接使用网络层提供的服务,如ping程序和OSPF协议

封装过程

TCP报文段封装过程

当发送端应用程序使用send(或write)函数向一个TCP连接写入数据时,内核中的TCP模块首先把这些数据复制到与该连接对应的TCP内核发送缓冲区中,然后TCP模块调用IP模块提供的服务,传递的参数包括TCP头部信息和TCP发送缓冲区中的数据,即TCP报文段

UDP封装过程类似,只不过无需为应用层数据保存副本,因为它提供的服务是不可靠的,当一个UDP数据报被成功发送后,UDP内核缓冲区中的该数据报就被丢弃了。如果应用程序检测到该数据报未能被接收端正确接收,打算重新发送这个数据报,则应用程序需要从用户空间重新将该数据报拷贝到UDP内核发送缓冲区中

IP封装后的数据称为IP数据报,IP数据报也包括头部信息和数据部分,其中数据部分就是TCP报文段、UDP数据报或者ICMP报文经过数据链路层封装的数据成为帧,传输媒介不同,帧的类型也不同。以太网上传输的是以太网帧,而令牌环网络上传输的则是令牌环帧,帧的最大传输单元(MTU),即帧最多能携带多少上层协议数据(比如IP数据报),通常收到网络类型限制------过长的IP数据报可能需要被分片传输各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序------这个过程成为分用

ARP协议工作原理

IP地址到以太网地址(MAC地址)的转换原理:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的其他机器都将收到这个请求但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址以太网ARP请求/应答报文详解


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:开源终端上网行为管理服务器windows版本包的编译及运行环境搭建
下一篇:关于Idea创建Java项目并引入lombok包的问题(lombok.jar包免费下载)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~