网络基本问题记录
计算机网络各层协议
在讨论TCP/IP协议的层次时,有必要提及一个上下文,是根据OSI的模型还是TCP/IP协议的模型:
人们已经进行了一些讨论关于如何将TCP/IP参考模型映射到到OSI模型。由于TCP/IP和OSI模型组不能精确地匹配,还没有一个完全正确的答案。
下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:
7 | 应用层 | 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP |
6 | 表示层 | 例如XDR、ASN.1、SMB、AFP、NCP |
5 | 会话层 | 例如ASAP、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets |
4 | 传输层 | 例如TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL |
3 | 网络层 | 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25 |
2 | 数据链路层 | 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP |
1 | 实体层 | 例如线路、无线电、光纤 |
通常人们认为OSI模型的最上面三层(应用层、表示层和会话层)在TCP/IP组中是一个应用层。由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭连接组成,并且在TCP和UDP下的各种应用提供不同的端口号,这些功能能够被单个的应用程序(或者那些应用程序所使用的库)增加。与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。
4 | 应用层 (OSI 5 到 7层) | 例如HTTP、FTP、DNS (如BGP和RIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分) |
3 | 传输层 (OSI 4层) | 例如TCP、UDP、RTP、SCTP (如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分) |
2 | 网络互连层 (OSI 3层) | 对于TCP/IP来说这是网际网络协议(IP) (如ICMP和IGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上) |
1 | 网络接口层 (OSI 1和2层) | 例如以太网、Wi-Fi、MPLS等。 |
注:在TCP/IP模型中,ARP协议属于IP层;在OSI模型中,ARP协议属于链路层。总之,具体到某个协议,它到底属于哪一层,并不是那么严格。
各层网络使用的设备
物理层:
中继器,集线器,双绞线
数据链路层:
网桥,以太网交换机,网卡(一半物理层,一半数据链路层)
网络层:
路由器,三层交换机
传输层:
在网络各个层中的数据包的名称分别是什么
数据帧、数据包、数据报以及数据段 OSI参考模型的各层传输的数据和控制信息具有多种格式,常用的信息格式包括帧、数据包、数据报、段、消息、元素和数据单元。 信息交换发生在对等OSI层之间,在源端机中每一层把控制信息附加到数据中,而目的机器的每一层则对接收到的信息进行分析,并从数据中移去控制信息,下面是各信息单元的说明: 数据帧(Frame):是一种信息单位,它的起始点和目的点都是数据链路层。 数据包(Packet):也是一种信息单位,它的起始和目的地是网络层。 数据报(Datagram):通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。 段(Segment):通常是指起始点和目的地都是传输层的信息单元。 消息(message):是指起始点和目的地都在网络层以上(经常在应用层)的信息单元。 元素(cell)是一种固定长度的信息,它的起始点和目的地都是数据链路层。 元素通常用于异步传输模式(ATM)和交换多兆位数据服务(SMDS)网络等交换环境。 数据单元(data unit)指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。 SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。 Packet(数据包):封装的基本单元,它穿越网络层和数据链路层的分解面。通常一个Packet映射成一个Frame,但也有例外:即当数据链路层执行拆分或将几个Packet合成一个Frame的时候。 数据链路层的PDU叫做Frame(帧); 网络层的PDU叫做Packet(数据包); TCP的叫做Segment(数据段); UDP的叫做Datagram。(数据报)——在网络层中的传输单元(例如IP)。一个Datagram可能被封装成一个或几个Packets,在数据链路层中传输 帧和数据包都是数据的传输形式。帧,工作在二层,数据链路层传输的是数据帧,包含数据包,并且增加相应MAC地址与二层信息;数据包,工作在三层,网络层传输的是数据包,包含数据报文,并且增加传输使用的IP地址等三层信息。
TCP协议的控制位
紧急URG(URGent)
当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。
当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与手不中紧急指针(Urgent Pointer)字段配合使用。
确认ACK(ACKnowledgment)
仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
推送PSH(PuSH)
当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。这种情况下,TCP就可以使用推送(push)操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快的(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
复位RST(ReSeT)
当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重复位。
同步SYN(SYNchronization)
在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置1就表示这是一个连接请求或连接接受报文。
终止FIN(FINis)
用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
转发和路由选择
常用端口号
协议使用
问题
Q1:网关是什么?
- 网络层转发
- 网段分割
Q2:ping 一个域名,需要经历哪些网络相关的硬件设备?
- 本机、服务器的网卡
- 路由器、以太网交换机、网线
Q5:DNS解析和CDN , DNS解析有什么类型
Q7:tcp拥塞控制简单说下
Q8:http和https的区别
安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
Q9:你觉得http和https的端口为什么不能一样
Q11:长连接除了解决网络io方面还解决了什么问题
Q12:http2.0有了解吗
Q14:arp协议在哪一层
Q15:arp协议在客户端还是服务端
Q20:TCP报头都有什么,为什么可靠
Q21:https的工作流程
Q22:http1与http2
Q23:http长短连接