zoukankan      html  css  js  c++  java
  • 计算机网络基本知识

    今天来讲讲网络,主要将传输层和应用层的一些基础知识

    OSI七层模型:应用层(application)、表示层(presentation)、会话层(session)、传输层(transport)、网络层(network)、数据链路层(data)、物理层(physical/base)。用一句英语总结就是 all people seem to need data base. TCP/IP体系结构是分为4层,分别是应用层、传输层、网际层IP、网络接口层。

    网络层:网络层把运输层产生的报文段或用户数据报封装成分组或包(packet)进行传送,网络层的一个重要任务就是选择合适的路由进行转发。

    传输层:负责向两台主机中进程之间的通信提供通用的数据传输服务。传输控制协议(TCP)和用户数据报协议(UDP)位于传输层。

    TCP结构:由TCP首部(源端口和目的端口、序号、确认号、数据偏移、保留位、[URG, ACK, PSH, RST, SYN, FIN],窗口,检验和,选项)和数据部分组成。

    UDP结构:UDP首部(源端口,目的端口,长度,检验和)+ 数据

    TCP和UDP的区别?

      1、tcp提供面向连接的,可靠的数据传输服务,udp提供无连接的尽最大努力交付(不保证可靠传输);

      2、tcp比udp更耗系统资源,udp传输速度比tcp块(因为不需要进行连接和拥塞控制);

      3、udp端口支持一对一、一对多、多对多的通信,而每条tcp连接只支持一对一;4、udp头部开销为8个字节,tcp为20字节。

    UDP为什么支持一对多?

      这是因为一个udp端口会关联一个报文队列(缓存),udp根据目的端口号将到达的报文加到对应队列,不同源而同一目的地的报文会定位到同一队列。

    TCP如何实现可靠传输?

      1、 数据编号和确认;

      2、 采用滑动窗口协议进行了流量控制;

      3、 超时重传时间的选择合适;

      4、 拥塞控制机制。

    TCP三次握手四次挥手时状态变化:

           三次握手:

        1、   初始状态:客户端处于CLOSED状态,服务器处于LISTEN状态;

        2、   客户端(第一次握手):发送SYN(client),客户端处于SYN_SENT状态;

        3、   服务器(第二次握手):收到SYN(client),,服务器被动打开连接,发送SYN(server),ACK,服务器处于SYN_REVD状态;

        4、   客户端(第三次握手):收到SYN(server),发送SYN(client),ACK,客户端建立连接处于ESTABLISHED状态;

        5、   服务器:收到ACK,处于ESTABLISHED状态。

      四次挥手:

        1、 客户端(第一次挥手):客户端没有数据要发送了,主动进行关闭,发送FIN(client),处于FIN_WAIT_1状态,等待服务器发送完数据;

        2、 服务器(第二次挥手):收到FIN(client),发送ACK,处于CLOSE_WAIT状态,把未发送完的数据继续发送;

        3、 客户端:收到ACK,处于FIN_WAIT_2状态,接收服务器发来的数据;

        3、 服务器(第三次挥手):数据发送完毕,发送FIN(server),处于LAST_ACK状态;

        4、 客户端(第四次挥手):收到FIN(server),发送ACK,进入TIME_WAIT状态,定时经过两倍报文段寿命时间后变回CLOSED状态;

        5、 服务器:收到ACK,回到CLOSED状态。

    应用层:应用层协议定义的是应用进程间通信和交互的规则。DNS、http、ftp、smtp等协议位于应用层。

    在浏览器输入url(例如www.baidu.com)回车后发生的事件?

      1、 浏览器向DNS请求解析www.baidu.com 的ip地址;

      2、 域名系统DNS解析出百度的IP地址;

      3、 浏览器与服务器建立tcp连接;

      4、 浏览器发出取文件命令:GET;

      5、 服务器给回响应,把文件发送给浏览器;

      6、 释放tcp连接;

      7、 浏览器显示文件的内容。

    http/1.0和http/1.1区别:

      http1.0采用非持续连接方式,每一次请求/响应对应一个tcp连接,浏览器每次请求文件会与服务器建立tcp连接,收到响应后就关闭连接,所以对应如果一个网页上有很多引用的对象(比如图片),每次请求这些对象都要进行tcp连接,从tcp三次握手方式可以可以看出浏览器从发出请求到收到响应需花费2个往返时间,可以看出开销很大;

      http1.1使用持续连接方式较好的解决了http1.0的问题,持续连接指的是在服务器响应后仍保持连接,并且http1.1还可以使用流水线工作方式,在浏览器收到响应报文之前能够连续发送多个请求报文,这样服务器就可以一个接一个收到请求报文,然后发回一个接一个的响应报文(节省了许多往返时间)。

    http的报文结构:

      1、 请求行/状态行:请求行包含 请求的方法(如GET、POST)、请求的url、http的版本,状态行包含 版本、状态码、解释状态码的短语;

      2、 首部行:用来说明浏览器、服务器或报文文体的一些信息;

      3、 实体主体:请求报文一般不用这个字段(请求方法为POST会有这个字段用来存放发送给服务器的数据),响应报文通常是返回个客户的文档。

    状态码有5类:

      1、 1xx 表示通知信息的,如请求收到了或正在进行处理

      2、 2xx 表示成功,如接受或知道了

      3、 3xx 表示重定向,完成请求后还要采取进一步行动

      4、 4xx 表示客户差错,如请求中有错误的语法或资源找不到了

      5、 5xx 表示服务器差错,如服务器无效无法完成请求

    例:单击超链接浏览器发送的报文:

      1、 请求行: GET  超链接URL  HTTP/1.1

      2、 首部行: HOST:www.xxx.com

      Connection:close

      User-Agent:Mozilla/5.0(用户代理使用的浏览器)

      Accept-Language:cn:

    http和https的区别:

      1、 http是无状态的,连接方式简单,这个状态指的是在通信期间客户端和服务器在临时会话中产生的数据(在标准的http协议里是没有cookie和session的),无状态也即对事务处理没有记忆能力,而https的连接方式是http+ssl。

      2、 http是明文传输,信息传输未经过加密;https是经过ssl加密的;

      3、 http端口为80,https为443;

      4、 https协议需要用到数字证书,数字证书要向证书授权(CA)机构申请,需要一定的费用。

    以上为内容如有错误请指出,谢谢!

  • 相关阅读:
    JavaScript的离线存储——localStorage、sessionStorage以及cookie
    for循环中的异步处理(异步变同步)
    pc网站随鼠标滚动动态出现效果
    layui tab选项卡Hash地址的定位和跳转到指定tab栏
    scroll滚动监听实现animate返回顶部(有坑)
    Vue之使用elementUI的upload上传组件导入csv文件
    element+sortablejs插件实现拖拽排序效果
    超简单的jq图片上传
    取字符串中的汉字的俩种方式
    js获得url地址携带参数
  • 原文地址:https://www.cnblogs.com/X-huang/p/10635572.html
Copyright © 2011-2022 走看看