计算机网络知识

目录

1.网络模型

(1)OSI七层模型:

(2)TCP/IP五层模型:

(3)TCP/IP四层模型

2、各层传输的数据格式协议数据单元PDU

3.OSI七层模型各层介绍

(1)物理层

(2)数据链路层功能

(3)网络层介绍、主要协议、设备、IP地址

(4)传输层功能及协议

(5)会话层和表示层

(6)应用层及应用层协议

4.IP地址

1)0.0.0.0

2)回环地址

3)组播地址

5.子网掩码

6.路由选择协议:

7.TCP/IP协议

(1)相关应用层协议

(2)TCP三次握手

(3)TCP四次挥手断开

8.UDP协议和相关的应用层协议

(1)相关应用层协议

9.DNS协议,输入一个URL后发生了什么?

10.长连接和短连接区别及应用场景;

11.Get和Post的区别

12.转发和重定向的区别

13.HTTP协议和HTTPS协议的区别

14.HTTP几个版本的区别

15.Session和Cookie的区别

16.IO NIO BIO AIO


1.网络模型

(1)OSI七层模型:

TCP的拥塞控制(详解)-CSDN博客

TCP 拥塞控制_tcp拥塞控制-CSDN博客

FFmpeg常用命令汇总_ffmpeg命令大全-CSDN博客

应用层,表示层、会话层、传输层、网络层、数据链路层、物理层;

(2)TCP/IP五层模型:

应用层、传输层、网络层、数据链路层、物理层;

(3)TCP/IP四层模型

应用层、传输层、网络层、网络接口层;

2、各层传输的数据格式协议数据单元PDU

应用层传输数据,传输层传输数据段或报文,网络层传输IP数据或分组,数据链路层传输帧。

3.OSI七层模型各层介绍

(1)物理层

物理层为上层协议提供了一个传输数据的可靠的物理媒体。简单地说,物理层确保原始的数据可以在各种物理媒体上传输。

(2)数据链路层功能

如何将数据组合成数据块即帧,如何处理传输差错,如何调节发送速率和接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。

数据链路层在不可靠的物理介质上提供可靠地传输。该层的作用包括:物理地址寻址,数据的成帧、流量控制、数据检错和重发等;

(3)网络层介绍、主要协议、设备、IP地址

网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;

基本数据单位是IP数据包,包含的主要协议有IP协议,ICMP协议,ARP协议,RARP协议。

IP地址:用于标识网络中的唯一一台主机或路由器。路由选择:可以根据数据报的目的地址为其选择合适的传输路径。

IP协议是不可靠的无连接数据报协议————一种尽最大努力交付的服务。就是说IP协议不保证数据的完整性和安全性,数据报有可能丢失、乱序、损坏或者延迟到达

IP报文在数据链路层被分片后,到达目的主机IP层的顺序可能就会发生变化,因此要对原IP报文进行合并就要根据上述的16位标识,3位标志,13位片偏移对原IP报文进行合并。

IPv4头部通常为 20 字节,除非含有可变长的选项部分。

IPv4地址是32位,IPv6址由16个字节(0~255)构成,共128位。

重要的设备:路由器;

(4)传输层功能及协议

传输层是端到端通信,传输层负责将上层数据分段并且提供端到端的、可靠或者不可靠的传输。此外传输层还要处理端到端的差错控制和流量控制问题。

传输数据的单位叫做报文。网络层只是根据网络地址将源节点发出的数据包传送到目的节点,而传输层负责将数据可靠地或不可靠的传送到相应的端口;

常用协议是TCP协议,UDP协议,HTTPS协议443。重要设备:网关。

(5)会话层和表示层

会话层负责管理主机之间的会话进程;表示层负责对数据的加密、压缩、格式转换等理解行为;

(6)应用层及应用层协议

应用层为操作系统或网络应用程序提供访问网络服务的接口。

应用层协议包括:

ftp协议FTP协议主动模式数据端口20、控制端口21_ftp在主动模式下,使用的控制端口号为-CSDN博客

telnet远程登录协议(默认端口23)不安全是因为它是明文传输;

DNS协议(域名解析协议)DNS使用TCPUDP端口53,底层是udp协议。

SMTP协议,POP3协议,HTTP协议80;

4.IP地址

1)0.0.0.0

常用于寻找自己的IP地址,例如在我们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。

也可以理解为网络地址

2)回环地址

127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。

3)组播地址

D类地址就是组播地址。

先回忆下A,B,C,D类地址吧:

A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;(modified @2016.05.31)

B类地址以10开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255;

C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255。

D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信);

E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。

注:只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。

5.子网掩码

计算机网络基础知识总结 | 菜鸟教程

6.路由选择协议:

RIP协议和OSPF协议,先不复习;

7.TCP/IP协议

TCP协议是面向连接的可靠的字节流通信协议,通过三次握手建立连接,四次挥手断开连接;

头部长度20个字节,内含源端口、目的端口、序号、确认号以及FIN,SYN,ACK,OST,URG,PSH来个标识,以及窗口,检验和,紧急指针;

包含流量控制(滑动窗口,端到端),超时重传(客户端发现一定时间内没有收到ACK回复,重新发送),快速重传(服务端提示客户端数据包丢了),拥塞控制(慢启动,拥塞避免,拥塞发生,快速恢复)等机制;

TCP是一对一连接通信。

(1)相关应用层协议

HTTP协议,FTP协议(21(控制端口),20(数据端口)),SMTP(简单邮件传输协议,25号端口),POP3协议。

(2)TCP三次握手

1.c->s:SYN=1,seq=x,

2.SYN=1,ACK=1,seq=y,ack=x+1;(1代码连接数据报文消耗了一个序列号)

3.ACK=1,seq=x+1,ack=y+1;

为什么三次握手?

  • 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。
  • 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。

(3)TCP四次挥手断开

6. c->s: FIN=1,seq=x;

7. ACK=1,seq=y,ack=x+1;

8.FIN=1,ACK=1, seq=w,ack=x+1;

9.ACK=1,seq=w+1,ack=y+1;

为什么要四次握手?

为了服务端将尚未发送的数据发送完,发送完再发送FIN标识,ack是为了告诉客户端我收到了你的FIN通知;

客户端发送完第九步后还有一个CLOSED WAIT阶段,等待2个MSL时间内看是否会再次收到服务端的FIN,MSL是IP数据包在互联网上能存活的最长时间。

另外既可以是客户端主动关闭也可以是服务端主动关闭;

8.UDP协议和相关的应用层协议

UDP是面向无连接的,不可靠的数据包服务;

UDP是User Datagram Protocol,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。可靠性由上层应用实现,所以要实现udp可靠性传输,必须通过应用层来实现和控制。

可以是一对一通信,一对多通信,多对多通信;

传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。

实现确认机制、重传机制、窗口确认机制。

如果你不利用Linux协议栈以及上层socket机制,自己通过抓包和发包的方式去实现可靠性传输,那么必须实现如下功能:

发送:包的分片、包确认、包的重发

接收:包的调序、包的序号确认

目前有如下开源程序利用udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。

TCP只能是一对一通信

UDP头部长度为8个字节;

适用于实时的视频音频传输,QQ聊天;

(1)相关应用层协议

DNS,SNMP,TFTP(简单文件传输协议,端口号69)。

9.DNS协议,输入一个URL后发生了什么?

输入一个URL后的详细过程-CSDN博客

10.长连接和短连接区别及应用场景;

长连接和短连接区别及应用场景_实现长链接之后的使用场景-CSDN博客

11.Get和Post的区别

Get和Post的区别_get 请求会被浏览器主动缓存,而 post 不会。-CSDN博客

12.转发和重定向的区别

转发和重定向的区别_转发是服务器行为,重定向是客户端行为。-CSDN博客

13.HTTP协议和HTTPS协议的区别

HTTPS协议和HTTP协议-CSDN博客

14.HTTP几个版本的区别

HTTP版本的区别-CSDN博客

15.Session和Cookie的区别

Session存储在服务端,cookie存储在客户端(浏览器);

Session的运行依赖Session ID,Session ID是存储在cookie中的,也就是说,如果浏览器禁用了cookie,Session ID需要通过其他方式实现,比如在URL中传递Session_ID;

Session可以放在文件、数据库、或者内存中都可以;

用户验证这种场合一般用Session;

Session比Cookie安全,因为其他人可以分析存放在本地的cookie;

单个Cookie存储的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie。

Session能存储任意的java对象,cookie只能存储String类型的对象。

16.IO NIO BIO AIO

BIO 同步阻塞,服务器实现客户端一个链接就开一个线程进行处理,可能会造成不必要的线程开销,可以通过线程池机制改善。BIO方式适用于连结数目比较小且架构固定的应用背景。

NIO同步非阻塞,服务器实现模式是一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。适用于连接数目多但是连接比较短的架构,比如聊天服务器,并发局限于应用中,编程比较复杂。

AIO异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成后再同志服务器去启动线程进行处理。AIO适用于连接数目多且连接表较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值