简单形象理解网络传输过程--读书笔记

原文地址如下:
笔记:
1)有五层:应用层,传输层,网络层,连接层和实体层
2)实体层:将电脑连接起来的物理手段,传输0和1
3)连接层:确定0和1的分组方式,是0和1有确定的意义。一般使用以太网(Ethernet)协议来进行分组,一组数据叫做一个帧,一个帧分为2个部分:head和data。其中head固定18字节和data是46到1500字节。
head包含数据的发送者和接收者的信息。而接受者和发送者用网卡地址来标记,即MAC地址。48位,一般用12个HEX表示。前6个厂商号,后6个网卡流水号,保证MAC独一无二。
一个网卡如何知道另一个MAC地址?通过arp协议
系统如何把数据准确传输到另一个地址?通过广播的方式。发送者想局域网内所有成员发广播,每个成员接收后看一下广播的head里的MAC地址是不是自己,如果是则接收,不是则不接受。
4)网络层的诞生:如果世界上所有的网络都是通过广播的方式,那么数据量十分巨大,会引起灾难。因此,只在子网络间用广播和MAC地址传播,而不同的子网直接用路由传播。这就是网络层。
于是每个计算机都有了两种地址:一个是MAC地址,另一个是网络地址,也急速IP地址。两者直接没有任何联系,前者确定了计算机在子网的地址,绑定在网卡上。后者是计算机的网络地址,由管理员分配。两者只是随机绑定在一起。
IP协议确定网络地址。一般是IPV4,有32个bit,一般用4组十进制数表示。ip地址分为两个部分:一部分表示网络部分,即如果两个地址网络部分相同,则其处于同一个子网络。另一部分表示主机地址。
但是如何确定ip地址中哪些部分表示网络,哪些表示主机呢?这就需要子网掩码。子网掩码也是32位,1表示网络,0表示主机。如255.255.255.0表示前3组是网络部分。因此判断两个ip是否在同一子网,只需要将ip与子网掩码进行AND操作,如果最终结果相同,则表示在同一个子网。
因此ip协议主要作用两个:为计算机分配ip地址,确定哪些ip地址在同一个子网。
ip数据包必须兼容以太网数据包,这样才能最终传到物理主机上。
ip数据包的形式:head+head+data:也就是说以太网的head不变,将其data分为2个部分,一部分作为ip的head,用来确定ip数据包的发送者和接受者。另一部就是具体的数据。因此如果ip数据包的数据超过1500,就需要分成多个ip包发送。
ARP协议:要通过网络发送数据,需要知道两个地址,一个是ip地址,一个是mac地址。一般ip是已知的,所以需要一种通过ip地址获取mac地址的协议。这就分两种情况,一种是两个主机不再一个子网络,那么无法得到对方的mac地址,数据包只能通过网关(两个子网络的连接处)传递数据。另一种就是在一个子网络,则通过arp协议获取mac。
过程如下:主机A如果要向B发数据。首先A发送一个广播,包含B的ip地址,而mac地址出填写的都是FF.FF.FF.FF....表明这是一个广播。子网的主机都会受到消息,但是只有B发现其中的ip和自己的相同,所以B会做出回复,返回自己的mac地址,而其他的主机则不进行回复。这样a就是知道b的mac了。
一个疑问:既然通过ip地址b已经能知道对方想要的是自己,那么为何还要费事返回mac,然后再通过mac的方式通信呢?个人猜想,ip地址是可以随意改变的,而mac是唯一的,所以用mac更加安全。
5)传输层:上述通过ip和mac地址,可以建立两个主机之间的通信。但是如何建立两个主机之间程序的通信呢?比如a主机的qq要和b主机的qq通信,而不b的msn通信。这就需要一个端口号。port代表每一个使用网卡的程序的编号。端口号16位ui,0-1023被系统占用。
因此传输层要做的是端口到端口之间的通信,网络层做的是主机到主机的通信。在unix中,主机+端口就叫做socket。网络程序就是通过socket进行工作。
udp协议:要在ip数据包中加入端口号就需要新的协议,最简单是udp协议。通用需要兼容ip和以太网协议。其数据格式为head+head+head+data,即将ip包的data在分出一块来作为head,加入端口的信息。
tcp协议:为了防止丢包,产生了有确认机制的udp协议,也就是tcp。如果有数据包丢失,得不到确认,那么发出方就会得知,并且重新发包。
6)应用层:在tcp或udp协议基础之上,将data部分填充为满足特定协议的数据,如满足ftp或email的数据。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值