关于网络的总结(一)

前几天应聘一个实习生岗位,考官问了很多网络相关的知识,由于我太久没有复习,回答的很差。这让我很恼火,明明已经理解的东西为啥记不住呢?借此机会,我把之前《信息在网络中的漫游》系列重新梳理一遍。

  1. 信息的封装和解封

    信息从一台主机发到另一台主机是需要经过层层封装并解封的。事实上,通信的两个主体是主机上的某个软件或程序。程序产生一段信息或数据,发送给运输层模块,在这里被封装成TCP/UDP报文,本质就是在信息的前面加入一些元数据,比如最重要的源端口和目的端口、报文长度等;这些报文被送往IP模块,再次被封装成IP数据报,在前面加入源主机IP和目的主机IP以及数据报长度等元信息;数据报还要被封装成MAC帧,原理同前面一样。MAC帧应该就不会再封装了,因为再往后就是物理层了,帧在物理层以比特的形式发送出去。上面的发送过程中,信息分别流经了应用层(原始数据,由程序产生)、运输层、网络层、链路层、物理层。信息接收的过程基本上就是这个过程的逆序。

    运输层的任务是提供程序(更准确的说是进程)之间的通信,一台机器上可能同时有好多个程序在通信,所以必须提供端口号来识别不同的程序。

    网络层提供源和目的主机之间的通信,但是这里的源和目的主机只是公网上的一个逻辑节点,网络层用IP来标识不同的节点。我们知道,IP的本质只是路由器转发表中的一串数字而已,一个IP与路由器中一个网卡接口绑定在一起。从这个接口出发的链路最终指向哪台具体的机器并不是路由器或公网关心的,比如家里的一台电脑独享一个IP,当它坏掉之后换一台新机器,新机器的IP还是原来的那个,没有随之改变。

    虽然IP没变,但肯定有些东西是变了的,毕竟这是一台跟原来不一样新机器。变的就是MAC地址,如果说IP标识的是网络上的一个逻辑节点,那么MAC地址是紧紧和一台电脑绑定在一起的,它标识的是一台机器的身份,具体的说是这台机器上那个网卡的身份(机器的网卡是可以更换的)。

    MAC地址是链路层的概念,链路层提供具体的机器到机器之间的直接通信。有了MAC地址,两台机器之间就能识别彼此,然后直接发送信息。当然,如果一个网络(比如局域网)中只有两台互联的机器,那么就不存在识别的问题,一台机器发送的信息目的地只可能有一个,这时候其实不需要MAC地址;但问题是一个网络中不可能只存在两台机器,机器多了之后就只能通过一台转发设备(比如交换机)连接各个机器,这时候转发设备有很多个端口,它必须知道某个端口到底对应的是哪台机器,所以它会维护一张转发表,内容就是哪个端口对应的是哪个MAC地址,MAC地址就代表了一台机器。同样道理,路由内部也有很多个端口,它其实维护了两张表,一张是IP和MAC的对应,一张是MAC和端口的对应

    源主机和目的主机虽然知道彼此的IP,但是并不知道MAC,所以他俩不能直接通信。IP提供了一种假象,就好像源主机和目的主机是直接通信似的,实际上IP封装了底层的通信细节,真正的实现是这样的:源主机把MAC帧发送给离它最近的一台机器(通常是网关路由器),这台机器解封MAC帧,读取内部的IP头部数据,对比其目的IP和自己的IP,二者一致的话,说明这台路由器就是目的主机,于是逐层剥离头数据,读取最核心的应用层数据发送相应的程序去处理;否则,重新封装成MAC帧,继续这样转发另一台路由器,直到最终传给目的主机。

时间: 2024-11-14 18:14:19

关于网络的总结(一)的相关文章

iOS开发——网络编程OC篇&Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

网络攻防第一次作业(201421450010)

姓名:陈书扬 学号:201421450010 指导教师:高见 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确保其连通性.同时为两个虚拟机做一个快照 windows虚拟机 Linux虚拟机 本地主机win10 两台主机都ping通 2.Windows基本命令 dir显示目录   cd 进入目录 Arp -a -d -s arp缓存 net share 查看计算机IPC$共享资源 netstat -ano网络链

10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包

- 10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包 - 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html  - tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html  # 10.6 监控io性能 ![mark](http://oqxf7c508.bkt.clouddn.com/b

Kali linux网络配置

Kali linux 安装完成后,需要对其网络进行配置.使用DHCP服务是配置网卡最简单的方法之一,但渗透测试时通常不会这样做,因为系统会被记录在DHCP服务器的数据库中. 1  动态DHCP方式 配置文件地址: /etc/network/interface # 启动系统激活设备 # Loop回环地址 auto lo iface lo inet loopback # 启动系统激活设备 # 网卡eth0设置为DHCP类型 auto eth0 iface eth0 inet dhcp 2  静态St

深度复数网络 Deep Complex Networks

转自:https://www.jiqizhixin.com/articles/7b1646c4-f9ae-4d5f-aa38-a6e5b42ec475  (如有版权问题,请联系本人) 目前绝大多数深度学习模型中的数学都是实数值的,近日,蒙特利尔大学.加拿大国家科学院-能源/材料/通信研究中心(INRS-EMT).微软 Maluuba.Element AI 的多名研究者(其中包括 CIFAR Senior Fellow Yoshua Bengio)在 arXiv 上发布了一篇 NIPS 2017(

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

Android网络通讯简介

网络通信应该包含三部分的内容:发送方.接收方.协议栈.发送方和接收方是参与通信的主体,协议栈是发送方和接收方进行通信的契约.按照服务类型,网络通信可分为面向连接和无连接的方式.面向连接是在通信前建立通信链路,而通信结束后释放该链路.无连接的方式则不需要在通信前建立通信连接,这种方式不保证传输的质量. Android提供了多种网络通信的方式,如Java中提供的网络编程,在Android中都提供了支持.Android中常用的网络编程方式如下: 针对TCP/IP协议的Socket和ServerSock

openvpn实现分流,指定IP走VPN,其它走本地网络

最近研究了Openvpn好久.现在写一点心得出来. 客户需求:看香港某几个网站使用openvpn翻墙过去,其它所有访问不能用翻墙,要走本地. 系统环境: Centos x64位 6.8, 使用在线yum安装 一.服务器端配置 详细配置参考其它配置文档 [[email protected] openvpn]# rpm -qa | grep openvpn openvpn-2.3.11-1.el6.x86_64 生成ta.key文件,用于tls-auth认证. # openvpn --genkey

如何构建安全的网络连接机制

随着计算机网络与信息化的不断发展,DT时代数据资源的多样性.庞大性.分布广泛性,导致信息安全问题日趋复杂,计算机网络的开放框架所带来的威胁层出不穷.面对严峻的网络安全形势,传统的信息安全系统从架构和强度上已经难有大的突破.人们在信息安全的实践中逐渐认识到,大多数安全隐患来自于终端,如何解决这项问题,成为了各网络大咖们需要攻克的又一课题. 勤智数码产品方案部-秦杨凯给出了这个课题的解决方案-- 通过构建对等规格的网络安全协议和的信息资源管理体系的分布式网络,可快速提高数据资源自由流通.往来无碍.安

网络运维调查

我想在北京就业 通过百度我知道工作职位仅在北京地区网络运维的职位有2668个,朝阳区276个,东城33个,海淀258个,石景山15个,延庆2个,西城48个,昌平67个,丰台74个,怀柔4个,通州28个,密云3个,大兴57个,房山5个,门头沟3个,顺义18个.薪资方面,4001~6000元每个月的有793个,6001~8000元每个月的有1059个,8001~10000元每个月的有709个,10001~15000元每个月的有509个,15001~20000元每个月的有301个,20001~3000