应用层协议与传输层、网络层、数据链路层在编码上的区别

本文深入解析TCP/IP协议各层的作用,对比应用层与其他层在编码上的差异,通过实例阐述不同层面对同一IP地址的不同表达形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、TCP/IP协议各层作用

协议层关键元素作用
数据链路层MAC地址依靠MAC地址,构建同子网主机到主机的数据包传输链路
网络层IP地址依靠IP地址,构建源子网到目标子网的数据包传输链路
传输层端口依靠端口,构建源进程到目标进程的传输链路
应用层应用自定义规则依靠客户端与服务端共同定义的规则完成客户端与服务端的交互

 

 

 

 

 

二、应用层协议与传输层、网络层、数据链路层在编码上的区别

2.1 问题描述

有很多大谈四层模型、五层模型、七层模型文章书藉,但一般都很少会谈及应用层协议与传输层、网络层、数据链路层在编码上的区别的问题。

但就个人而言长时间有着以下疑惑:

从“看”的角度----传输层、网络层、数据链路层的内容是一堆不容易看懂的十六进制数;而应用层是一些可读的字符串

从“写”的角度----在手动构造MAC头/IP头/TCP头时,一个IP、一个端口要进行半天的转换和拼接;而应用层都是string+=xxxx就完事了

文章书藉都没说到应用层协议与传输层、网络层、数据链路层有什么区别,但为什么在以上“看”和“写”两个角度上给人迵然不同的感觉?

 

2.2 原因说明

简单而言造成这个问题的原因是:传输层/网络层/数据链路层的内容多用二进制代号或者数值类型,而应用层使用的是ASCII码。

 

2.3 举例说明

下面以一个ip地址--192.168.220.128--在网络层和应用层的各自的表示方法进行说明

协议层192.168.220.128写法说明
网络层c0 a8 dc 80c0是192的十六进制表示方式,a8是168的十六进制表示方式,依此类推
应用层3139322e3136382e3232302e3132380d0a31是1的ascii码,39是9的ascii码,依此类推

 

 

 

2.4 原因探究

传输层/网络层/数据链路层的内容多用二进制代号或者数值类型不直接用ASCII的原因,应该一是互联网初期网络资源宝贵需要尽量节约,二是一般程序员并不需要手动编写这三层协议头。

应用层不用二进制代号或者数值类型而要用ASCII的原因,主要是因为应用层是广大程序员要涉及的层次如果二进制代号或者数值类型而不用ASCII,基本没法进行。

 

2.5 克服恐惧

无论是应用层还是传输层、网络层、数据链路层,可以认为其内容都会被组到同一个数组中,一同以二进制的方式发送出去,并没有什么分界线。

MAC头:

IP头:

TCP头:

HTTP头:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值