ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络基础

2022-04-26 15:00:58  阅读:217  来源: 互联网

标签:HTTP 请求 IP 报文 基础 网络 TCP 发送


网络协议

  

 

 

   TCP/IP 四层应用模型

    应用层:HTTP、DNS、FTP、SMTP、TELNET。

    传输层:TCP、UDP。

    网络层:IP、ICMP、ARP、RARP。

    接口层:各种物理通信网络接口。

IP

  ip:Internet Protocol,相当于网络中的一个节点,类似于地址,我们称之为 IP 地址,同一个网络中, IP 地址具有唯一性。在两个网络中 IP 地址可以相同。就相当于在一个街道里同一个门牌号只能有一个,不可能有第二个;在两个街道里门牌号可以相同。

  IPv4 网络使用 32位 地址,以点分十进制表示,如:192.168.0.1。

  IPv6 地址的 128位(16 个字节),写成 8 个 16 位的无符号整数,每个数用四个十六进制位表示,这些数之间用冒号( : )分开,例如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984。

TCP(①) / UDP 协议

  TCP:

    Transmission Control Protocol,会建立一个可靠的连接。

    三次握手:A 与 B 建立 TCP 连接时,首先 A 向 B 发送 SYN( 同步请求 ),然后 B 回复 SYN+ACK( 同步请求应答 ),最后 A 回复 ACK 确认,这样 TCP 的一次连接( 三次握手 )的过程就建立了。

    

 

    

   UDP:

    User Datagram Protocol,一种非连接,不可靠的传输方式。但是效率高,速度快,比较适合视频和音频。A 向 B 发送数据,不会与 B 建立连接,是直接发送的,而 TCP 会先建立一个连接。A 向 B 发送邮件,不会先确认 B 在不在,而是直接发送,没有前面的连接。

DNS 和 DHCP 协议

  DNS:

    Domain Name System,域名解析系统。在 Internet 上域名和 IP 地址之间是一一对应的。域名虽然便于人们记忆,戴拿机器之间只能互相认识 IP 地址,它们之间的转换工作成为域名解析。域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器

    DNS 会把域名转换成 IP 地址。IP 是面向主机的而域名则是面向用户的

  DHCP:

    Dynamic Host Configuration Protocol,动态主机配置协议。动态的分配 IP 地址。

FTP 协议

  FTP:文件传输协议,用于 Internet 上的控制文件的双向传输。同时它也是一个应用程序。基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。默认端口是 21。传输模式有二进制和字节模式两种。

HTTP 协议

  HTTP:超文本传输协议( HyperText Transfer Protocol ),一种无状态的,以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。

  HTTP 报文格式

    HTTP 协议的请求报文和响应报文的结构基本相同,由三大部分组成。

      1、起始行( start line ):描述请求或响应的基本信息。

      2、头部字段集合( header ):使用 key-value 形式更详细地说明报文。

      3、消息正文( entity ):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。

        

 

     请求行报文格式

      1、请求方式:如 GET/HEAD/PUT/POST,表示对资源的操作。

      2、请求目标:通常是一个 URI,标记了请求方法要操作的资源。

      3、版本号:表示报文使用的 HTTP 协议版本。

      

 

     响应行报文格式

      1、版本号:表示报文使用的 HTTP 协议版本。

      2、状态码:一个三位数,使用代码的形式表示处理的结果,比如 200 是成功,500 是服务器错误。

      3、原因:作为数字状态码补充,是更详细的解释文字,帮助人理解原因。

      

 

     HTTP 头字段

      头部字段是 key-value 的形式,key 和 value 之间用" : "分隔,最后用 CRLF 换行表示字段结束。比如前后分离时经常遇到的要与后端协商传输数据的类型" Content-type:application/json ",这里的 key 就是" Content-type ",value 就是" application/json "。HTTP 头字段非常灵活,不仅可以使用标准里的 Host、Connection 等已有头,也可以任意添加自定义头,这就给 HTTP 协议带来了无限的扩展可能。

    头字段注意项

      1、字段名不区分大小写,字段名里不允许出现空格,可以使用连字符" - ",但不能使用下划线" _ ",因为有的服务器不会解析带" _ "的头字段。

      2、字段名后面必须紧接着" : ",不能有空格,而" : "后的字段值前可以有多个空格。

      3、字段的顺序是没有意义的,可以任意排列不影响语义。

      4、字段原则上不能重复,除非这个字段本身的语义允许,例如:Set-Cookie。

    常用头字段

      请求字段:请求头中的头字段,如 Host、Referer。

      响应字段:响应头中的头字段,如 Server。

      通用字段:在请求头和响应头里都可以出现,如 Content-type、Connection。 

  HTTP 请求的完整过程

    用户在浏览器输入网址回车后,网络协议做了以下工作。

    1、首先干活的是浏览器应用程序,它要解析出 URL 中的域名。

    2、根据域名获取对应的 ip 地址,首先从浏览器缓存中查看,如下可以查看浏览器中域名对应 ip 的解析( chrome://net-internals/#events )。如果没有则从本机域名解析文件 hosts( /etc/hosts ) 中查看,还没有则从 LDNS(Localdnsserver)、Rootserver 域名服务器、国际顶级域名服务商的 DNS 的层层解析。

    3、拿到 IP 地址后,浏览器就可以发起与服务器的三次握手。

    4、握手建立之后,就开始组装 http 请求报文,发送报文。

    5、服务器收到请求报文之后,开始请求报文解析,生成响应数据,发送响应数据。

    6、浏览器收到响应之后,开始渲染页面。

      

 

 TCP(②)协议

  TCP:Transmission Control Protocol,面向连接、可靠、基于字节流的传输层通信协议。

  特点:

    1、基于连接的:数据传输之前需要建立连接。

    2、双全工的:双线传输。

    3、字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃。

    4、流量缓冲:解决双方处理能力的不匹配。

    5、可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性。

    6、拥塞控制:防止网络出现恶性拥塞。

  TCP 连接管理

    1、TCP 连接:四元组(源地址、源端口、目的地址、目的端口)。

    2、确认连接:TCP 三次握手。

      a.同步通信双方初始序列号(ISN,initial sequence number)。

      b.协商 TCP 通信参数(MSS,窗口信息,指定校验和算法)。

      

   四次挥手

      

      A:发送 FIN 数据包,代表 A 不在发送数据。

      B:收到请求,开始应答,避免了 A 重新发送 FIN 重试(应答机制)。

      B:处理完数据之后关闭,关闭连接,及发送 FIN 请求。

      A:收到请求后发送 ACK 应答,B 服务可以释放连接。

      等待 2MSL 后释放连接。

      1、防止报文丢失,导致 B 重复发送 FIN。

      2、防止滞留在网络中的报文,对新建立的连接造成数据扰乱。

  字节流的协议

    TCP 把应用交付的数据仅仅看成是一连串的无结构的字节流,TCP 并不知道字节流的含义,TCP 并不关心应用程序一次将多大的报文发送到 TCP 的缓存中,而是根据对方给出的窗口值和当前网络拥堵的程度来决定一个报文段应该包含多少字节。

    

 

   数据可靠性传输

    停止等待协议

      

 

     当我们发送报文,等报文到大服务器端的时候,服务器端会发送一个 ack。然后才能再次发送报文,然后服务器再发送一个 ack。

  重传机制

    1、ack 报文丢失

      

      客户端发送报文后在一定时长的等待之后没有收到 ack 那么就会认为是报文丢失,会再发一次报文,直到收到 ack。

  2、请求报文丢失

    

 

标签:HTTP,请求,IP,报文,基础,网络,TCP,发送
来源: https://www.cnblogs.com/0529qhy/p/16193752.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有