tcp/ip-报文的传输过程

1 应用层

我们使用浏览器浏览网页,我们的应用就是浏览器。浏览器使用http协议传输数。当我们输入http地址回车。浏览器把请求封装成http报文,格式如下

POST http://192.168.xxx.xx:8080/api/produce/globalInfo HTTP/1.1
Content-Type: application/json

{"uid":"xxx"}

http报文=请求头+请求行+请求体

应用层将把报文传递给下一层-tcp

2 tcp

传输控制层接收到上一层发来的报文,将http报文切割,分组拼装tcp报文:

Tcp报文=tcp+http报文。

Tcp报头包含了Seq序列号,用于数据到达接收方节点的传输层时,能正确顺序重组,还原成http报文。

Tcp报文最大长度65535字节。

Tcp层把报文传送给下一层网络层

3 ip

决定走什么路由才能到达目的IP

在这一层,IP报文=IP+tcp+http报文

Ip层把数据向下传输给数据链路层

4 数据链路层

以太网报文=以太网头+IP+tcp+http报文

其中以太网头中包含了源MAC和目的MAC

4.1 无交换机时

如果是通过同轴电缆或集线器连接的局域网,则该报文广播出去,局域网(也就是同一个冲突域)中的其他节点都能收到报文,和自己的MAC比较,如果是自己的MAC则网卡发起中断请求,接收请求报文字节流。

4.2 有交换机时

大部分情况是,我们的请求要跨交换机,跨局域网,甚至跨路由,跨ISP,走互联网,最终到达目的地。

同样,该报文在冲突域中广播出去,冲突域中其他节点都可以收到广播,如果目的地址就在冲突域,则接收报文字节流。

如果到达交换机,交换机查询交换表,将请求发送给另一个交换机,在同一广播域中传递,如果交换表中的下一跳是路由器,则又会走路由继续传递。

4.3 数据链路层如何处理报文

数据链路层拼装成以太网报文后,传递给物理层

物理层把数据链路层的报文转化为高低电平,在物理媒介上传输。

5 物理层

物理连接媒介,物理层协议产生并检测高低电平,以便发送和接收数据。这里物理层设备网卡把数据链路层报文转换为字节流,字节流转换为高低电平发送出去。经过同轴电缆,交换机等媒介,到达中继节点,中继节点网卡接收字节流,可能经过很复杂的中继才最终到达目的节点。

下面是我们平常使用的网线结构,通常8根。

 

8股线的各有各的作用:

  • 发送数据线2根(Tx+ / Tx-):这两根线用于将发送方的数据信号传输到接收方。发送方通过这两根线发送数据信号。为什么发送数据需要两根呢?原因是为了实现差分数据传输和抗干扰能力;两根线传输同一比特位但是信号方向相反--这叫做差分数据传输;并且绞合在一起组成双绞线抗电磁干扰

  • 接收数据线2根(Rx+ / Rx-):这两根线用于接收来自发送方的数据信号。接收方通过这两根线接收数据信号。

  • 电源线2根(V+ / V-):这两根线用于提供电源供电。它们可以为一些需要电源的设备(如网络摄像头或VoIP电话)提供电力。

  • 地线2根(GND+ /GND-):这两根线用于连接设备的地线,以提供电路的接地。

 物理层设备网卡就是将以太网报文(帧)转成高低电平发送到网线进行传输,就好像流水一样,我们形象的成为它为字节流

6 各层之间的传输关系

 

 

 

 

6.1 举例说明报文传输过程

比如:

应用层(http浏览器)-http报文-tcp报文-ip报文-数据链路层报文(以太网帧)-源网卡-物理媒介-交换机A网卡-数据链路层 -查询交换表获取下一跳MAC-拼装数据链路层报文-网卡-物理媒介-路由器A网卡-数据链路层-IP-查询路由表获取下一跳IP地址-封装IP报文-数据链路层-路由器A网卡-物理媒介-交换机B网卡-数据链路层-查询交换表获取下一跳MAC-封装数据链路层报文-交换机B网卡-物理媒介-目的节点网卡-数据链路层-IP-tcp-应用层(http)-获取到发来的http报文。

posted @ 2022-01-07 20:55  zhenjingcool  阅读(619)  评论(0编辑  收藏  举报