下个月你就要结婚了,打个电话给老王。
你先打开电话本,查找“老王”的电话号码:老王 -> 13987654321(DNS解析)。 然后你用手机拨打了13987654321(IP)。 你的手机连接到了联通的基站(路由器),联通(你自己的网关)发现这是个移动的手机号,通过移动的帮助,找到了老王的手机(MAC),老王的手机开始响铃。 “嘟……”(TCP握手) -“喂?老绿啊!”“哈哈,是我啊,老王!(连接建立)下个月我结婚,你有空吗?”(开始传输数据,先说事)“噢,有啊!” -“那你记一下地址啊(再说时间地点)!北京市东长安街16号午门太和殿。”“诶,你慢点说(流量控制),我记一下。” -“北京市”(缩小了滑动窗口)“嗯,然后呢?”(ACK)“东长安街16号”“东……16号”(ACK) -“午门太和殿”“午门(ACK“午门”)什么殿?你再说一遍,我没听清!”(“太和殿”传输失败,数据包丢失) -“太和殿”(重传)“好!记下了”(传输成功) -“那回见啊!”(准备断开连接)“好嘞!” 【通话已结束】(连接断开)
刚才的例子实际上传递了一段信息:我下个月结婚。 HTTP只是信息的载体,刚才说的“汉语”就是HTTP。你也可以用其他协议传递,比如“I'm getting married next month”,只要对方能理解协议,那就是同一个意思。 电话线路相当于一个TCP连接。TCP提供了流量控制、数据重传等机制保证了数据可靠顺序传输。当然这个例子中,可靠传输是靠人来保证的。 HTTP和TCP的联系,是HTTP(要结婚的消息)使用TCP(电话)提供的“传输能力”。除此之外,没了。
很多答案都提到了,网络协议是一个栈,提供对等通信。这里解释下对等。 老王和老绿只与电话发生交互,他们不理解声音如何转换成电信号,也不理解电磁波如何传播。他们只知道,我对着电话说汉语,对方就能听到汉语。老王和老绿就是一个对等的协议层。两部电话也是对等的协议层,它们给上面的老王和老绿提供传输语音的服务。而电话提供的服务,底层又依赖电磁波传递无线信号。最后形成了一个个服务层,完成了打电话这个事情。再举个栗子,两个老板要约时间谈生意,他们会跟自己的秘书下达指令,让秘书搞定约会这个事。双方的秘书会互相联系,约好时间地点和司机,最后搞定这个问题。老板们不会跟对方的秘书联系(除非是小老板对马老板,那他们实际上就是不对等的),因为他们不是一个层的。 把上文层次的概念,放到计算机网络中,就是协议栈。协议栈的每一层,都专注于自己层的事情:HTTP专注于要传输的信息(HTTP是信息的载体,所以在协议里面会标注信息长度,信息类型等),TCP专注于传输的可靠(为了可靠传输,TCP会给自己层的包标注大小和顺序,并且有确认机制),IP负责因特网传输(IP也有自己的格式,自己查吧),再下面的层负责与局域网和硬件打交道。 简单来说,网络协议栈里面,每层都解决了计算机通信流程的某一环节的问题。它们使用下层提供的能力跟对方机器的相应协议层通信,给上层提供自己的服务。 最后,TCP的下层是IP。“我下个月结婚”这几个字,你也可以通过短信(UDP)或微信(其他传输协议)来发送。虽然传输层协议不一样(电话 vs 短信),底层还是依赖IP协议(发短信仍然需要知道对方的电话号码)。 浏览器内核中会先查看缓存,然后设置 UA 等 HTTP 信息,接着调用不同平台下网络请求的方法。
基于无线电, 通过电流变化来产生无线电, 这个过程也叫[调制] 卡车拉着一车煤,从a点到b点,有公路的地方都好说,碰到江河胡海怎么办 !修建隧道,隧道里面走卡车就可以了呀。但是隧道多贵呢?那么改用轮渡吧,那么在水面上行驶的承载着卡车们的轮渡就可以看作是一条虚拟的隧道了。这个就是网络中隧道概念的生活化解释,希望你能明白。
网卡也称网络适配器 物理层和数据链路层
arp协议是一种 解析地址的协议, 根据通信方的ip地址就可以反查出对应的mac地址。 路由选择 有点像快递公司的送货过程。想要寄快递的人,只要将自己的货物送到集散中心。就可以知道快递公司是否肯收件发货。tcp协议是字节流。
这两个端口最大的区别就在于服务不同。 端口:80 服务:HTTP 说明:用于网页浏览。木马Executor开放此端口 端口:443 服务:Https 说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP。 在起始行开头的http1.1是版本 200ok是状态码 http虽然是无状态协议,但为了实现期望的保持状态功能,于是引用了cookie技术。 get方法是获取资源 post 是传输实体主体。 put 传输文件。 head 获得报文首部。 trace 追踪
代理服务器的基本行为就是接受客户端发送的请求后转发给其他服务器,代理不改变请求uri,会直接发送给前方持有资源的目标服务器。proxy 网关和代理十分相似。 cli client 框架就是架子就是骨架, 快速完成项目。
core 核心 也叫酷睿
sendfile机制 不用sendfile的传统网络传输过程: read(file,tmpbuf, len)
cookie http是一种无状态协议, 协议自身不对请求和响应之间的通信状态进行保存。 target 目标
网络接口与物理层
MAC地址:48位全球唯一,网络设备的身份识别
ARP/RARP
在硬件上通过硬件发送的时候MAC和IP地址之间怎么对应的就是通过ARP/RARP实现
ARP(地址解析协议):
IP地址——>MAC地址
RARP:
MAC地址——>IP地址(逆向的)
PPP协议:(拨号协议(GPRS/3G/4G))
之前电话通话电话线上网的时候通过这个协议,现在用手机无线的也是一样网络层
IP协议:
IP:(分为IPV4(168....)和IPV6(16进制用:隔开))
ICMP(Internet控制管理协议):ping命令属于ICMP
IGMP(Internet分组管理协议):广播,组播
传输层
TCP(传输控制协议):面向连接,可靠,效率低,一对一的可靠数据传输的协议
UDP(用户数据报协议):面向无连接,不可靠,效率高,提供不可靠的数据尽力传输
可靠(即数据无误,数据无丢失,数据无失序,数据无重复到达的通信)
SCTP:是可靠传输,是TCP的增强版,它能实现多主机,多线路的通信
应用层
网页访问协议:HTTP HTTPS(S是安全)
邮件发送接收协议:POP3(收)/SMTP(发),IMAP(可接收邮件的一部分)(QQ或者微信的邮件提醒,没下载整个文件但是能显示邮件的一部分,能处理邮件)
FTP:文件传输协议
Telnet(明文传输)/SSH(安全):远程登录
嵌入式相关:
NTP:网络时钟协议(以前诺基亚关机一定时间就得重新设置时间,很多嵌入式设备需要加进去的)
SNMP(开源(SNMP.NET)):简单网络管理协议(实现对网络设备集中式管理)比如路由,家里的路由登陆网页可以直接设置,但是如果在一个小区里安装了很多路由,一个一个改很麻烦,利用这个协议可以集中管理设置
RTP/RTSP:用传输音视频传输(监控等)