计算机网络通信

应用层

    应用层就是面向用户的,接受到下层发来的数据包,就需要解析,它需要规定应用数据的格式,他的内容全部放在TCP数据包的数据内容中

传输层

    有了MAC地址和IP地址,互联网中两台设备就可以通信了,但是每台设备上的不同应用程序,也需要通信,这就需要确定下层发送的数据包是给每个应用程序(进程)使用的,这就需要给应用程序网络进行端口分配。
    传输层的功能就是建立"端口到端口"的通信。数据包是那个端口发出的,那个端口该接受数据包,主机+端口号=Socket。所以就规定传输层也有一个数据包(UDP、TCP)

UDP协议

协议规定也有一个数据包,这个数据包含标头和数据,标头中存放端口号,只有8byte,数据包最长65536byte,刚好可以放在IP数据包中。

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到

TCP协议

和UDP一样标头中存放端口号,长度没有限制,但是已被不超过IP书包长度65536,避免分割TCP数据包
TCP数据包发出后会收到对方是否接收的信息,未收到就会一直发数据包,直到回应

网络层

    仅仅通过链接层的MAC地址只能实现同一个子网络中计算机之间网络通信,而全世界的网络是有无数个子网络构成的,若实现不同子网络的通信就需要使用路由协议

    在网络层中引入的网络地址,即IP地址,通过IP地址就可以确定两台计算机是否在同一网络中,例如IPV4,共32bit,前24bit,用于表示子网络,后8bit表示当前计算机在子网络中的编号。若两台计算机IP地址前24bit一样,那就在同一个子网络中,可以通过广播的方式发送数据包
    通过IP确定是否在同一子网络,就需要指定IP中那些bit用于表示子网络,这里就引出类子网掩码(subnet mask)他和IP地址一样长,例如255.255.255.0,两台计算机的子网掩码一样就表示在同一子网络
    IP的数据包,也是头和数据组成的,头中存储发送方和接收方的IP,头的大小为20~60byte,整个IP数据的大小最大为65536byte,但是IP数据包,是在链接层发出的数据包(最大1500),所以超过1500仍需要分割
    当网络层给下层发送数据时,内容超过1500就需要分割数据,分割后的数据每一条都要带上IP,然后下层根据IP组合数据。
    同一个子网络中设备如何获取IP地址获取MAC地址:通过发送一个IP数据包,数据包中接受方MAC地址设为FF:FF:FF:FF:FF:FF,这表示一个广播地址,其他设备接收到这个IP数据包后将其中IP取出和自己比对,若一样则返回自己的MAC地址,
        http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
    不在同一个子网络中无法通过ARP协议获取对方的MAC地址,就需要将IP数据包发送到他们网关,网关也有一个MAC地址,让网关处理
        http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html

网关

网关就是不同子网络直接通信的关口,每个网关下包含一个子网络,每个网关都有自己MAC地址和IP地址,通过网关可以和其子网络通信,两个网关直接也可以通信。

如何判断两个设备不在同一个子网络

首先发送方广播,判断是否在当前网络,若不在就先转发到网关,接收方MAC地址写网关MAC地址,IP写接收方的IP

链接层

    收到下层发来的0、1信号,准备将其按照以太网协发送到其他计算机
    MAC地址:网卡编号每一台计算通信必须依靠他,共48bit,前24bit表示厂商信息,后24bit表示网卡流水号
    以太网协议:所有的传输数据包,都必须包含头和数据,头大小尾18byte,头中保存发送者,接受者,以及传输数据的格式;数据最小为46byte,最大为1500byte,所以一个数据包最大只能为1518byte,最小为64byte,超过这个范围就需要将传输数据分割后发送

广播

使用ARP协议——两台计算机直接发送数据通过识别MAC地址,两者的MAC地址存放在数据包的头中,发送方会给同一个子网络中所有的计算机发送数据包,其他计算机会比较头中的MAC地址是否和自己一样,若一样则接收数据包,否则就将该数据包丢弃。

硬件层

    1.连接网络,保通信正常
    2.发送0、1电信号,本质上其实是高低电平,以及0、1传输使用的协议,例如I2C协议、SPI协议等。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值