为什么要学习网络协议?
****************(本文为极客时间app刘超的《趣谈网络协议》学习笔记)
《圣经》通天塔故事:上帝为了阻止人类联合,让人类说不同的语言,人类无法沟通,达不成“协议”,通天塔计划失败。互联网世界有统一的语言,所以连接在一起。
计算机中输入的文字,计算机能读懂,就是人类与计算机沟通的协议,只有通过这种协议,计算机才能知道我们想要他做什么。
协议三要素:
1.语法:一段内容符合一定的规则和格式;
2.语义:一段内容要代表某种含义;
3.顺序:先干啥,后干啥。
网络协议:
只教一台机器做什么不够,所以需要网络协议,让一大片机器互相协作,共同完成一件事情。
常见网络协议及分层:
应用层:DHCP HTTP HTTPS RTMP P2P DNS GTP RPC
传输层:UDP TCP
网络层:ICMP IP OSPF BGP IPSec GRE
(MAC)链路层:ARP VLAN STP
物理层:网络跳线
一个下单过程,看看用了什么网络协议:
浏览器输入http://www.taobao.com,这是一个url,浏览器并不知道地址,于是通过地址薄协议DNS或者HTTPDNS(更加精确)查找,最终会得到一个互联网世界门牌号IP ;知道目标地址后,使用HTTP协议或者HTTPS(加密)打包请求,说明买什么和买多少。
通过以上应用层封装后,通过socket编程交给传输层:
TCP(面向连接,有两个端口:浏览器监听端口和电商服务器端口,通过端口判断得到的包给哪个进程)或UDP;
传输层封装完成后,浏览器将包交给网络层:
网络层协议是IP协议(里面会有源ip地址和目标ip地址),通过目标ip,想要找到目标机器,操作系统要判断目标IP是本地人还是外地,知道是在外地,就需要去网关,而操作系统启动时,就会被DHCP协议配置IP地址,以及默认的网关的ip地址192.168.1.1。操作系统会问谁是192.168.1.1,网关会答应我就是,我的本地地址在村东头。这个本地地址就是MAC地址,问的那一下就是ARP协议;
于是操作系统将IP包交给了下一层,即MAC层
网关再将包发出去。因为包里有MAC地址,因而能到达网关。网关收到包后,会判断怎么走。网关往往是一个路由器,到某个IP地址怎么走,叫做路由表。路由器类似路过城关,每个城关连接两个国家,每个国家相当于一个局域网,国家内部,都可以通过本地地址MAC进行通信。跨越城关,就需要拿出IP头,问怎么走。城关知道怎么走,因为城关之间会通过路由协议沟通,常见的有OSPF和BGP。当找到最后的城关,最后的城关会对这个国家问谁是目标IP,目标服务器就会回复一个MAC地址。网络包过关后,通过这个MAC地址找到目标服务器。
目标服务器发现MAC地址对上了,取下MAC头,发给网络层。IP对上了,就取下IP头。IP头上会写上一层封装是TCP协议,于是交给传输层。TCP层中会对每个收到的包沿着来路回复收到。
网络层平安到达TCP层后,TCP头有目标端口,通过这个端口,可以找到电商网站程序正在监听这个端口,假如是一个tomcat,将这个包发给电商网站,当得到HTTP请求内容后,知道了买什么,买多少,需要通知相关进程进行行动,此时通过RPC远程过程调用来通知相关进程。处理完后,回复一个HTTPS的包告知下单成功,沿路返回到个人电脑,进入浏览器。
阅读更多
- 计算机网络,协议实现,学习记录
- 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
- python学习笔记3-方便的网络协议库
- 架构师速成7.2-为什么要学习协议、规范 分类: 架构师速成 2015-07-12 20:50 330人阅读 评论(0) 收藏
- Python网络协议模块学习之smtplib
- 网络编程学习笔记(二)UDP协议及聊天小程序的实现
- 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
- [计算机网络学习笔记]:协议概述
- 计算机网络(自顶向下方法)学习笔记 1.5 协议层次和它们的服务模型
- 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】详解为什么开发板的TFTP、NFS等网络功能神奇消失
- 黑马程序员_网络编程学习笔记-->代码主要是对UDP协议的讲解
- 架构师速成7.2-为什么要学习协议、规范
- java网络编程学习笔记之一(TCP/IP协议与UDP协议的区别和认识)
- [TCP IP详解:学习笔记]IP:网络协议
- MYSQL+PHP学习,从最基础的知识开始(网络函数和协议函数)
- T626code学习笔记之计算机网络协议
- 【Linux网络编程】 网络协议入门(很透彻,跟风学习)
- 菜鸟学习网络协议软件Quagga,修改ospfd vty端口和编译安装