网络基础补充(1)

网络基础补充(1)

本博客参考《图解Http》一书,记录本人不熟悉和容易忘记的知识点。

Http

  1. web使用http(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务端等一系列运作流程.
  2. http是一种不保存状态即无状态协议.为了实现希望的保持状态功能,于是引入了cookie技术.
  3. http/1.1中可以使用的方法

    方法 说明
    Get 获取资源
    Post 传输实体主体
    Put 传输文件,像FTP协议进行文件上传一样,要求在请求报文的主体中包含文件内容,然后保存在请求URI指定位置.
    Head 获得报文首部.和Get方法一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等.
    Delete 删除文件,和put方法相反.

粗谈Tcp/upd/ip

  1. TCP/IP协议族里面重要的一点是分层.TCP/IP协议族按照层次分别分为以下四层:应用层,传输层,网络层和数据链路层.  
  2. 下面大致列出各层次的作用:

    层次 作用
    应用层 应用层决定了向用户提供应用服务时通讯的活动.常用的服务有FTP,DNS.HTTP协议也在这里.
    传输层 对上层应用层,提供处于网络连接中两台计算机之间的数据传输,这里有两个性质不同的协议:TCP,UDP.
    网络层 在用来处理在网络上流动的数据包(网络传输的最小数据单位),规定了通过怎么样的路径到达对方计算机,并把数据包传送给对方.
    链路层 用来处理连接网络的硬件部分,包括操作系统,硬件的设备驱动,NIC(Network Interface Card,网络适配卡即网卡),以及光钎等物理可见部分.硬件上的范畴均在链路层的作用范围之内.
  3. 用http举例说明TCP/IP通讯传输流:

    • 客户端(在应用层发出一个想看某个web网页的请求)

      层次 做了什么
      应用层 http报文
      传输层 将http报文分割,在各个报文上打上标记序号和端口号转发给下一层
      网络层 根据IP协议增加作为通讯目的地的MAC地址后转发给链路层
    • 服务器端:在链路层接收到数据,按序往上层发送,一直到应用层.

    • 发送端在层和层之间传输数据时,每经过一层就会被打上一个该层所属的首部信息,相反,接收端在层与层之间传输时,每经过一层会把对应的首部消去.这种把数据信息包装起来的做法叫做封装.
  4. IP协议的作用是把各种数据包传送给对方,要确保确实传送到对方那里,两个重要的条件是IP地址和MAC地址.IP地址指明了节点被分配的地址,MAC地址是指网卡所属的固定地址.IP地址可以和MAC地址进行配对.IP地址可变换,但是MAC地址基本不会更改.

  5. ARP协议:一种用以解析地址的协议,根据通讯方的IP地址就可以反查出对应的MAC地址.

  6. TCP位于传输层,提供可靠的字节流服务(指将大块数据分割成以报文段为单位的数据包进行管理;而可靠指能够把数据准确可靠地传给对方).为了准确将数据送达目标处,TCP采用三次握手策略.

  7. DNS协议提供通过域名查找IP地址或者逆向从IP地址反查域名的服务.

URI和URL

  1. URI:统一资源标识符.URL:统一资源定位符.URI用字符串表示某一互联网资源,而URL表示资源的地点,可见URL是URI的子集.
  2. URI格式:以 http://user:[email protected]:80/dir/index.html?uid=1#chi 为例子解释

    分割 说明
    http 协议方案名
    user:pass 登录信息
    www.example.jp 服务器地址/域名
    80 服务器端口号
    dir/index.html 带层次的文件路径
    uid=1 查询字符串传入参数
    chi 片段标识符

 持久化连接

  1. 持久连接的特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态.在HTTP/1.1中,所有的连接默认都是持久连接.
  2. 管线化技术:不用等待服务器响应就可以发送下一个请求.
  3. 使用Cookie进行状态管理:

    • Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态.
    • Cookie会根据从服务器端发送的响应报文内一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie.下一次客户端再往该服务器发送请求时,客户端就会自动在请求报文中加入Cookie值后发送出去.服务器端拿到客户端发送来的Cookie后,会去检查是从哪一个客户端发送来的连接请求,然后对比服务器上的记录,最后得到之间的状态信息.

猜你喜欢

转载自blog.csdn.net/qq_37993487/article/details/79778961