计算机网络整理

本文参考了阮一峰的博客和《网络是怎么连接的》一书

应用层(Application Layer) 传输层(Transport Layer) 网络层(Network Layer) 链接层(Link Layer) 实体层(Physical Layer) 实体层 专门用来传输0,1信号的光缆,中继器(Repeater,也叫放大器)和集线器。 传输层 将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。 物理地址寻址、数据的成帧、流量控制、数据的检错、重发 确定了0和1的分组方式 以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data) "标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。 发送者和接受者的表示通过MAC地址,数据包的发送地址和接收地址,长度是48个二进制位,通常用12个十六进制数表示。独一无二的 通过"广播"(broadcasting)来确定MAC地址 网络层 路径选择、路由及逻辑寻址 "路由"指如何向不同的子网络分发数据包,因为广播的方式不可能覆盖全球 这一层的意义在于引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络,也就是网址 规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址 目前是IPv4,但是IPv6也逐渐推广开来。 分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255 通过"子网掩码",也就是表示子网络特征的一个参数。它在形式上等同于IP地址,判定是否是同一个子网络 使用的是and运算,比较两个结果是否相同 IP数据包也分为"标头"和"数据","标头"部分主要包括版本、长度、IP地址等信息 DNS解析器实际上通过操作系统内部的协议栈来执行的 怎么一层层的查,是通过解析域名,类似于层次结构,比如先查.com之类的 传输层 根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 决定数据包到底供哪个程序(进程)使用,使用"端口"(port),"端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系 Unix系统就把主机+端口,叫做"套接字"(socket) 简而言之: "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。 UDP协议 "标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容,这就是UDP数据包 TCP协议 有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。 应用层 规定应用程序的数据格式 应用程序协议就构成了"应用层",例如FTP,http。 URL解析,每种URL都有不同的格式 GET,POST,HEAD,PUT等方法 浏览器确定了Web服务器和文件名后,生成Http消息 具体传输过程: 上网设置: 一般是四个参数:  * 本机的IP地址  * 子网掩码  * 网关的IP地址  * DNS的IP地址 "动态IP地址",指计算机开机后,会自动分配到一个IP地址,不用人为设定。它使用的协议叫做DHCP协议。 它是一种应用层协议,建立在UDP协议之上。 开始上网了。 浏览器要向Google发送一个网页请求的数据包。 DNS协议可以帮助我们,将这个网址转换成IP地址。已知DNS服务器为8.8.8.8,于是我们向这个地址发送一个DNS数据包(53端口)。反馈给我们IP地址。 子网掩码判断是否在用一个网络,不是,则由网关转发 浏览网页用的是HTTP协议 GET / HTTP/1.1   Host: www.google.com   Connection: keep-alive   User-Agent: Mozilla/5.0 (Windows NT 6.1) ......   Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8   Accept-Encoding: gzip,deflate,sdch   Accept-Language: zh-CN,zh;q=0.8   Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3   Cookie: ... ... TCP协议 TCP数据包需要设置端口,接收方(Google)的HTTP端口默认是80,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。 IP协议 IP数据包需要设置双方的IP地址 以太网协议 IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过ARP协议得到) 服务器端相应: 根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的"HTTP请求",接着做出"HTTP响应",再用TCP协议发回来。 本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信

原文发布于微信公众号 - 鸿的学习笔记(shujuxuexizhilu)

原文发表时间:2017-08-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhisheng

看透 Spring MVC 源代码分析与实践 —— 网站基础知识

网站架构及其演变过程 基础结构 网络传输分解方式: 标准的 OSI 参考模型 TCP/IP 参考模型 ? 海量数据的解决方案 缓存和页面静态化 缓存 通过...

3328
来自专栏Jackie技术随笔

基本TCP套接口编程

为了执行网络I/O,一个进程(无论是服务端还是客户端)必须做的第一件事情就是调用socket函数。

4156
来自专栏haifeiWu与他朋友们的专栏

测试环境服务器硬盘塞满问题排查

某天下午测试环境服务器出现tab无法补全命令,给出的提示大概意思就是说,无可用空间无法创建临时文件,不过这次跟上次出现的问题比较像,上次服务器出现的问题,因此楼...

1241
来自专栏Netkiller

数据与应用程序间通信·UDP Socket

你是否想过当数据库中发生变化时,将变化内容通知到外面的应用程序。这样做的目的是 方便二次开发,例如你的软件第三方产品,你没有软件的源码,无法二次开发,这是你可以...

3546
来自专栏xingoo, 一个梦想做发明家的程序员

【AngularJS】—— 7 模块化

AngularJS有几大特性,比如:   1 MVC 2 模块化   3 指令系统   4 双向数据绑定 那么本篇就来看看AngularJS的模块...

2055
来自专栏nummy

cookie模块学习

输出是一个合法的Set-Cookie首部, 可以作为HTTP响应的一部分传递给客户端。

761
来自专栏不想当开发的产品不是好测试

iptables

工作原理: ? 基础: 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空...

3535
来自专栏技术之路

Http概述(一)

Http使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,也能够确保数据在传输过程中不会被损坏或产生混乱。 这样用户在访问信息时就不用担心其完整性了。 ...

2075
来自专栏张尧博客

su和sudo之间的区别以及如何在Linux中配置sudo

5016
来自专栏java学习

面试题13(一个具有生命的线程有哪些状态)

考点:考察求职者对线程的理解 出现频率:★★★ 【面试题解析】线程的状态表示线程在某时间段内进行的活动和将要进行的任务程有创建、就绪、运行、阻塞、死亡5种状态。...

3335

扫码关注云+社区

领取腾讯云代金券