计算机网络知识点总结

1.OSI网络七层结构与TCP/IP四层结构
 1)OSI只是一个概念型的框架
 OSI自下而上的七层结构包括:物理层-->数据链路层-->网络层-->传输层-->会话层-->表示层-->应用层;
 物理层:实现计算机节点的比特流传送,其会尽可能的屏蔽传输介质与物理主机的差异;
 数据链路层:接收物理层的比特流,封装成帧,或者相反,将上层的帧数据解析为比特流,该层会通过差错控制,流量控制等方法,进行较错处理,保证数据传输的可靠性,交换机工作在该层;
 网络层:进行网络地址与物理地址的转换,实现网络节点主机的通信,路由器工作在该层,数据是数据包,主要是IP协议;
 传输层:在传输大量文件时,网络可能会中断数次,为了保证传输大量文件的准确性,需要对数据进行切分成片段segment进行发送,解决了传输质量的问题,实现不同主机上进程间的通信,主要时涉及TCP协议和UDP协议;
 会话层:提供应用程序与网络直接的接口,负责网络中两节点的通信建立,终止,维持,保证应用程序能够自动收发包,寻址等;
 表示层;对来自应用层的数据进行解析(加密解密,转换翻译,压缩解压缩等),确保不同系统的交互;
 应用层:对应用程序提供通信服务,规定了发送方和接收方使用的报文格式,主要涉及HTTP协议;
 2)计算机网络的标准-TCP/IP协议,其可以看作是OSI的一种实现
 应用层(约包含OSI中的应用层,表示层,会话层):该层的协议主要包括FTP,HTTP,Telnet,SMTP协议等;
 传输层(约包含OSI中的传输层):该层的协议主要包括TCP,UDP协议;
 网络层(约包含OSI中的网络层):该层的协议主要包括IP协议;
 链路层(约包含OSI中的数据链路层和物理层).
 
2.TCP的三次握手
  1)说明:IP协议是一种无连接的协议,它不会一直占用计算机直接的通信线路,从而降低了对网络线路的需求,所以一条网络线路可以满足不同机器节点直接的通信,而通过IP就可以把数据
  分割成不同长度的数据片段,通过网络进行传输,IP将数据片段路由到目的地址,但是IP协议并没有进行可靠性或者完整性的校验,因此IP协议是不可靠的;必须由TCP协议进行控制
  TCP(传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层的控制协议,TCP将应用层的数据流分割成不同片段(受计算机连接网络数据链路层的最大传输单元及MTP的限制)通过IP层发送到目标节点的TCP层,
  TCP为了保证传播的准确性,给传输的数据包标识序号(seq),对方收到后返回ACK确认,如果在合理的时间内没有收到确认,则需要进行重传;其在发送和接受数据时,使用奇偶校验函数检验数据传输是否有误;
  2)TCP报文头,不包含IP地址,UDP也一样:
  源端口,目的端口:对于两节点主机,可以通过IP+协议+端口的方式标明主机上的进程;
  Sequence Number:序列号,在数据发送过程中,每个数据段都是要按照序号进行编号的;例:一个数据段的序号是100,携带的数据长度是100,则下一个数据段的序号就是200开始;
  ACK(Acknowledgment Number)确认号:表示期望收到对方下一个报文的第一个字节的序列号;
  Offset:长度不固定,表示TCP报文的数据距离TCP报文头的起始有多远;
  TCP Flags:TCP控制位,一共有8个,每个标志位表示一个控制功能,主要有:URG(紧急指针标志);ACK(确认序号标志,为1表示确认号有效,为0表示报文中不包含确认号);PSH(PUSH标志);
  RST(重置连接标志,重置因为主机崩溃等原因导致的错误连接或者拒绝连接请求等);SYN(同步序号,用于建立连接过程);FIN(finish标志,用于释放连接,关闭数据流)
  Windows:表示滑动窗口的大小,来告知发送端,接收端的缓存大小,控制发送端发送数据的速率,达到流量控制;
  Checksum:对TCP进行校验;
  Urgent Pointer:紧急指针,只有当URG为1时有效,表示紧急数据的字节数;
  TCP Options:TCP可选项,定义一些变量,长度等参数;
  3)所谓的握手,就是建立全双工的连接,大致流程如下(假定客户端主动打开,服务器被动打开):
    1.第一次握手:客户端发送连接请求报文SYN=1,seq=x(任意的正整数值),客户端由closed状态进入SYN-SENT状态;
    2.第二次握手:服务器在收到请求报文后,如果同意连接,发出确认报文SYN=1,ACK=1,seq=y,ack=x+1;服务求进入SYN-RCVD状态;
    3.第三次握手: 客户端在收到确认报文后,发送确认报文ACK=1,seq=x+1,ack=y+1,客户端进入ESTABLISHED状态,服务器收到后也进入ESTABLISHED状态
    
  4)为什么需要进行三次握手:主要是为初始化Sequence Numberd的初始值,通信双方要告知对方自己初始的数值,作为后续数据传输的序号,保证数据按顺序排列接收;
  5)第一次握手时SYN超时:客户端在发送SYN报文后下线,服务段在收到SYN报文后,回复SYN-ACK报文时,没有收到ACK确认报文,此时服务端会不断进行重试直到超时,在Linux下一共会等到63秒(1,2,4,8,16,32秒时发送一次)
     对于这种机制,恶意程序可以进行攻击造成SYN Flood,对于这种情况,在Linux下,当SYN队列满了后,通过tcp_syncookies参数回发SYN_Cookie;正常连接则会回发SYN_Cookie,从而建立连接;
  6)连接已建立,但是客户端出现问题:保活机制,向对方发送保活探测报文,没有收到,则继续发送,直到达到一定测试时才中断连接;
3.TCP的四次挥手
  1)客户端或者服务端都可以发起终止,来结束TCP的连接;
  2)第一次挥手:客户端发送FIN报文FIN=1,seq=u,客户端由ESTABLISHED状态变为FIN_WAIT_1状态;
     第二次挥手:服务端在收到FIN报文后,发送ACK报文ACK=1,seq=v,ack=u+1,服务器由ESTABLISHED状态变为CLOSE_WAIT状态,客户端由FIN_WAIT_1状态变为FIN_WAIT_2状态;
     第三次挥手:服务端在发送FIN报文FIN=1,ACK=1,seq=w,ack=u+,服务器由CLOSE_WAIT状态变为LASK_ACK状态,
     第四次挥手:客户端在收到报文后,发送ACK报文ACK=1,seq=u+1,ack=w+1,客户端进入TIME_WAIT状态,在等待2MSL时间后进入CLOSED状态,服务器在收到报文后进行CLOSED状态;
  3)为什么会有TIME_WAIT状态:确保有足够的时间让对方收到ACK包;有足够的实践,避免新旧连接的混淆;     
  4)为什么需要四次挥手才能断开连接:TCP是一种全双工的连接,在断开时,发送方和接收方都需要收到FIN报文和ACK报文,因此一共是四次;
4. UDP--用户数据包
  1)UDP报文头:源端口-Source Port,目的端口Destination Port,长度Length,Checksum,数据可选项组成;
  2)特点:1.是一种面向非连接的协议,其传输速度只受应用程序生成数据的速度,计算机的能力和传输带宽的限制;
          2.不需要维护状态,支持同时向多个客户端传输相同的消息;
          3.数据包报文头只有8个字节(TCP20个字节),额外开销较小;
          4.吞吐量只受限于数据生成速率,传输速率以及机器性能的限制;
          5.尽可能的交付,但不保证可靠的交付,不维护复杂的链接状态表;
          6.不对应该程序下发的数据信息进行拆分和合并,应用程序要选择合适的数据大小;
  3)与TCP的区别:1.面向连接与面向无连接;2.TCP可靠的,UDP是不可靠的;3.TCP依靠seq保证报文的有序性;4.TCP需要维护各种状态,而UDP速度较快,更适合对速度比较敏感的应用;5.TCP20个字节--重量级,UDP是8字节--轻量级;
5.TCP的滑动窗口
  1)RTT--发送一个数据包到接受到对应的ACK,所需要的时间;RTO--重传时间间隔;
  2)TCP使用滑动窗口来进行流量控制和乱序重排;
  3)窗口大小的计算:接收端:AdvertisedWindow(接收端能够接收的数据量大小) = MaxRcvBuffer(最大缓存池大小)-(LastByteRcvd(接收到的最后一个字节的序号)-LastByteRead(接收端最后读取的字节序号));
                    发送端:EffectiveWindow(发送端能够发送的有效数据量大小) = AdvertisedWindow - (LastByteSent(最后发送一个字节的序列号)-LastByteAcked(发送端最后确认字节的序列号));
  4)工作原理:
      发送方:发送数据主要分为四个不同部分:1)已经发送且收到确认的;2)已经发送未收到确认的;3)未发送且准备发送的;4)未发送且未准备发送的;
              发送方2)部分在收到确认后,滑动窗口会读取3)部分中的数据,从而实现窗口移动的效果;
      接收方:发送数据主要分为三个不同部分:1)收到且发送确认的;2)收到且未发送确认的;3)未收到的 滑动的效果与发送方类似;
6.HTTP--超文本传输协议
  1)特点:1.支持CS架构模式;2.简单快速;3.灵活,允许传输任意类型的对象;4。无连接的协议,限制每次连接只处理一个请求,服务器在处理完后就断开连接;5.无状态协议;      
  2)HTTP请求结构:
        请求行:包括请求方法,URL,协议版本等
        请求头部:名值对
        空行---表示头信息的结束
        请求正文
     HTTP响应结构:
        状态行:协议版本,状态码,状态码描述
        响应头部:名值对
        空行---表示头信息的结束
        响应正文
7.请求/响应的基本过程:
    1.首先是DNS解析:浏览器会根据URL逐层查询DNS服务器缓存解析URL中断域名所对应的IP地址,DNS服务器缓存从近到远依次是浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,
                    根路径服务器缓存,顶级域名服务器缓存;
    2.根据IP地址及端口号通过三次握手和服务器建立TCP连接;
    3.浏览器发送HTTP请求,将请求发送给服务器;
    4.服务器处理请求并返回包含html文本的HTTP响应报文;
    5.浏览器根据收到的HTML进行解析渲染;
    6.浏览器通过四次挥手释放TCP连接;
8.HTTP请求状态码:
    1)1**:请求已经接收,继续处理;
    2)2**:成功--表示请求被成功接收处理--200
    3)3**:重定向--要完成请求需要进一步进行操作
    4)4**:客户端错误--请求语法错误或请求无法实现--400/401/403/404
    5)5**:服务器端错误--未能实现合法的请求--500/503
9.GET/POST请求的区别:
    1)报文层面:GET请求将信息放在URL中,由于长度限制,而POST将信放在报文体中;
    2)数据库层:GET是符合幂等性和安全性的,POST不符合;
    3)其他层面:GET请求可以被浏览器缓存,存储,而Post不行;
10.Cookie与Session的区别---HTTP是无连接的,这样就需要每次都进行查询,而Cookie与Session就解决了HTTP无状态的问题
    1)Cookie: 是由服务器发送给客户端的特殊信息,并以文本形式存放在客户端;客户端再次请求的时候,会把Cookie发送给服务器;服务器在接收后,会解析Cookie来生成与客户端相应的内容;
    2)Session:是服务器的机制,在服务器上保存数据;服务器在接收到客户端的请求后,解析请求中是否包含session id,如果包含,则检索后返回数据,如果没有则创建一个session,并生成一个session id返回给客户端保存;
11.HTTP与HTTPS的区别
    1)SSL-安全套接层:是一种未网络通信提供安全及数据完整性的安全协议,SSL3.0后更名为TLS,其采用身份验证和数据加密来保证通信的安全和数据完整性;
    2)加密方式:对称加密(加密和解密都使用一个密钥)/非对称加密(加密和解密使用不同的密钥)/哈希算法(将任意长度的信息转换为固定长度值)/数字签名(在信息后面加上哈希后的数据)
    3)HTTPS数据传输流程:
        1.浏览器将支持的加密算法信息发送给服务器;
        2.服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器;
        3.浏览器验证证书的合法性,并结合证书公钥加密信息发送给服务器;
        4.服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器;
        5.浏览器解密响应消息,并对消息进行验证,之后进行加密交互数据;
    4)区别:HTTPS需要CA证书/HTTPS使用密文传输/HTTPS默认端口号是443,HTTP是80/HTTPS = HTTP+加密+认证+完整性保护;    
12.Socket是对TCP/IP协议的抽象,是操作系统对外开发的接口,其通信的基本流程如下:
    1)服务端创建socket,绑定socket和端口号,服务端监听该端口号;
    2)客户端创建socket,指定连接计算机的端口;
    3)服务器在收到客户端的连接请求后,客户端向socket中写入信息;服务端从socket中读取字符
    4)数据传输完毕,关闭客户端和服务端的socket连接;
    
          
  
  
  
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值