【读书笔记】计算机网络
基础部分
1、五层协议的体系结构分别是什么?
应用层:确定进程之间通信的性质以及满足用户需求。提供进程信息交换和远地操作,作为互相作用的应用进程的用户代理。
运输层:负责主机中两个进程的通信
网络层:负责分组选择合适路由
数据链路层:网络层交下来的数据封装成帧,两个相邻借点实现帧的传输
物理层:透明地传输比特流
2、OSI七层
物理层: 机械、电子、定时接口通信通道上的原始比特流传输。
重要协议:IEEE 802.1A, IEEE 802.2到IEEE 802.11
数据链路层:物理(MAC)寻址,同时将比特流封装成帧传输。
重要协议:FDDI, Ethernet, Arpanet, PDN, SLIP, PPP
网络层:给处于不同地理位置的网络中的两个主机之间提供线路。
重要协议:IP, ICMP, ARP, RARP, AKP, UUCP
运输层:接收上一层的数据并进行分段和传输然后送给网络层,这一层数据叫做段。
重要协议:TCP, UDP
会话层:通过传输层建立的通路进行会话
重要协议:SMTP、DNS
表示层:可确保一个系统的应用层所发送的信息一定能被对方的应用层识别,必要时表示层通过一种通用格式来实现多种格式数据之间的转换。
重要协议:Telnet, Rlogin, SNMP, Gopher
应用层:为应用程序提供网络服务
重要协议:HTTP、TFTP, FTP, NFS, WAIS、SMTP
3、为何有MAC地址还要IP地址?
- 一个是物理地址,一个是逻辑地址
- 两点在一个网络内,只需要MAC。不在一个网络内,就需要IP。IP地址:网络+主机
- 如果不在一个网络内,本机就要发给网关。网关的MAC地址需要ARP协议
- ARP表:IP地址,MAC地址。自主学习增加。如果有网关IP对应的MAC地址,就转化发送。如果没有,就直接启动ARP协议向网内广播。
TCP
1、TCP和UDP的区别?
- TCP面向连接;UDP无连接。
- TCP可靠:传送数据 无差错,不丢失,不重复,按序列到达;UDP尽最大努力交付,不保证可靠传输
- UDP具有较好的实时性,工作效率比TCP高,适用于高速传输和实时性有较高的通信或广播通信
- 每一条TCP只能是点到点;UDP支持一对一,一对多,多对一,多对多
- TCP对系统资源要求较多;UDP较少
2、拥塞控制和流量控制都是什么,两者的区别?
- 流量控制:端到端。A发的太快B无法接受。就是流量控制。用滑动窗口的大小改变来实现
- 拥塞控制:AB网络发生堵塞导致传输过慢或者丢包,来不及传输。防止过多数据注入到网络中,这样可以使网络中的路由器和链路不至于过载。拥塞控制是全局性的过程。涉及到所有的主机,路由器,以及与降低网络性能有关的所有因素。
3、谈谈TCP为什么要三次握手?为什么要四次挥手?
- 三次握手:
第一次。A跟B说,我要建立连接了
第二次。B跟A说,OK那我也建立连接
第三次。A跟B说,我知道了
二三次都是为了保证连接可靠。如果只有一次,A无法发到B,那就是A自己建立连接,发消息,人家都收不到。
第二次,是为了告诉A,B收到你的消息了;如果只有两次,B不知道A是否收到自己的消息。
第三次握手是为了告诉B,A收到B的消息,并且可以互发信息。如果A的第一次握手因为延迟才到B。但现在AB已经聊完天,关闭连接了,B发出第二次,A没什么想跟B说的,就不会发出第三次握手,这样B就不会建立连接消耗资源。
- 四次挥手:
第一次,A跟B说,我要断开连接了。
第二次,B跟A说,好的我知道了,我不接受你信息了
第三次,B跟A说,我传给你的信息传完了,你可以关闭连接了
第四次,A跟B说,好的,我关闭连接了。
第二次挥手是为了告诉A,B知道你不再发送信息了,且B不再接收信息。但B仍可以向A发送信息。因为A是主动关闭的一方,但B可能仍然有信息未发送完。
第三次挥手是为了告诉A,B的信息发完了,A你可以关闭连接了。
第四次挥手是为了告诉B,A我知道可以关闭连接了,你也可以关闭了。
注意:对A来说,第四次挥手后2MSL内未接收到B的第三次挥手信息才会关闭连接,否则会继续第四次挥手。防止B接收不到第四次挥手信息。(若B接收不到第四次挥手信息,将重复发送第三次挥手信息,这个2MSL就是如果真的有重复发送的第三次挥手信息,在这个时间内肯定到达A了(路由不出问题的话),就是为了保证B收到第四次挥手信息)
- seq(序号):seq是对要发送的数据进行编号;
- ack(确认号):ack是上一个接受的数据的序号+1,也是下次期望接受的数据编号
- FIN=1释放连接,SYN=1连接请求/接受,ACK=1一个确认报文
4、播放视频用TCP还是UDP?为什么?
TCP 和 UDP 是质量和实时性的权衡。
- 拿视频网站来说,你完全可以缓冲 20s 再播放,不会带来什么影响,但如果画面有马赛克之类的东西出现肯定是不好的,所以用 TCP。
- 视频聊天,如果缓冲 5s,相信整个聊天已经没法愉快的进行了,而这时出现一些画面质量的损失也可以被接受,所以用 UDP。
HTTP
1、 响应码
1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。
2xx(成功)表示成功处理了请求的状态代码。
3xx(重定向)表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。
4xx(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
400(错误请求)服务器不理解请求的语法。
401(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
403(禁止)服务器拒绝请求。
404(未找到)服务器找不到请求的网页。
405(方法禁用)禁用请求中指定的方法。
408(请求超时)服务器等候请求时发生超时。
5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
2、HTTP和TCP的区别?
- 传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的
- Socket本身不算是协议它只是提供了一个针对TCP或者UDP编程的接口。
3、HTTP和HTTPS的区别?
- HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
- HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
- HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
4、HTTP和Socket的区别?
- http 为短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要保持每隔一段时间向服务器发送”保持连接”的请求。这样可以保证客户端在服务器端是”上线”状态
- Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通讯双方开始互发数据内容,直到双方断开连接。在实际应用中,由于网络节点过多,在传输过程中,会被节点断开连接,因此要通过轮询高速网络,该节点处于活跃状态。
5、一次http请求的全过程
(1) 打开浏览器,地址栏输入blog.csdn.net。
(2) 开始进行域名解析
-
- 浏览器自身搜dns缓存 搜blog.csdn.net有没有缓存 看看有没有过期,如果过期就这个结束
- 搜索操作系统 自身的dns缓存
- 读取本地的host文件;
- 浏览器发起一个dns的一个系统调用
(3)浏览器获得域名对应的ip地址后 发起tcp三次握手
(4) tcp/ip 链接建立起来后,浏览器就可以向服务器发送http 请求 。
(5) 服务器端接受到请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果数据返回给浏览器,如果是一个完整的网页,就是把完整的html页面代码返回给浏览器。
(6) 浏览器拿到html页面代码,解析和渲染页面,里面的 js、css图片资源都需要经过上面的步骤。
(7) 浏览器拿到资源对页面进行渲染,最终把一个完整的页面呈现给用户。
一些协议
1、常用端口号
FTP | telnet | SMTP | DNS | TFTP | HTTP | SNMP |
21 | 23 | 25 | 53 | 69 | 80 | 161 |
2、ICMP协议(IP)
因特网控制报文协议;TCP/IP协议族的一个子协议;在IP主机、路由器之间传递控制消息。
ICMP报文:差错报告报文和询问报文
3、ARP协议(IP)
地址解析协议
4、HTTP协议
HTTP超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
GET/POST/PUT/DELETE
5、DHCP协议
动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。
6、Telnet协议(TCP)
它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。
7、SMTP协议(TCP)
定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。
8、 DNS协议(UDP)
用于域名解析服务,将域名地址转换为IP地址。它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
9、TFTP协议(UDP)
一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。