• 网络之xx


    七. 计算机网络部分

    TCP 有哪些状态
    image
    TCP 和 和 UDP
    TCP 协议:
     使用TCP协议前,须先建立TCP连接,形成传输数据通道
     传输前,采用“ 三次握手”方式,点对点通信,是可靠的
     TCP协议进行通信的两个应用进程:客户端、服务端。
     在连接中可进行大数据量的传输
     传输完毕,需释放已建立的连接,效率低
    UDP 协议:
     将数据、源、目的封装成数据包,不需要建立连接
     每个数据报的大小限制在64K内
     发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
     可以广播发送
     发送数据结束时无需释放资源,开销小,速度快
    HTTP、HTTPS、TCP/IP、Socket通信、三次握手四次挥手过程
    三次握手、四次挥手。为啥不是三次不是两次
    三次握手
    image
    我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次握手。

    第一次握手: A给B打电话说,你可以听到我说话吗?
    第二次握手: B收到了A的信息,然后对A说: 我可以听得到你说话啊,你能听得到我说话吗?  
    第三次握手: A收到了B的信息,然后说可以的,我要给你发信息啦!
    

    注意: HTTP是基于TCP协议的,所以每次都是客户端发送请求,服务器应答,但是TCP还可以给其他应用层提供服务,即可能A、B在建立链接之后,谁都可能先开始通信。如果两次,那么B无法确定B的信息A是否能收到,所以如果B先说话,可能后面的A都收不到,会出现问题 。如果四次,那么就造成了浪费,因为在三次结束之后,就已经可以保证A可以给B发信息,A可以收到B的信息; B可以给A发信息,B可以收到A的信息。
    四次挥手
    image
    A:“喂,我不说了 (FIN)。”A->FIN_WAIT1
    B:“我知道了(ACK)。等下,上一句还没说完。Balabala…..(传输数据)”B->CLOSE_WAIT | A->FIN_WAIT2
    B:”好了,说完了,我也不说了(FIN)。”B->LAST_ACK
    A:”我知道了(ACK)。”A->TIME_WAIT | B->CLOSED
    A等待2MSL,保证B收到了消息,否则重说一次”我知道了”,A->CLOSED
    这样,通过四次挥手,可以把该说的话都说完,并且A和B都知道自己没话说了,对方也没花说了,然后就挂掉电话(断开链接)了 。
    Socket
     利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实
    上的标准。
     网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标
    识符套接字。
     通信的两端都要有Socket,是两台机器间通信的端点。
     网络通信其实就是Socket间的通信。
     Socket允许程序把网络连接当成一个流,数据在两个Socket间通过IO传输。
     一般主动发起通信的应用程序属客户端,等待通信请求的为服务端。
    Socket分类:
    流套接字(stream socket):使用TCP提供可依赖的字节流服务
    数据报套接字(datagram socket):使用UDP提供“尽力而为”的数据报服务
    HTTPS和HTTP的区别

    1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
    HTTP1.0和HTTP1.1的一些区别 HTTPS 2.0
    1、缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
    2、带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。 错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
    3、Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
    4、长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点
    浏览器输入一个 URL 按下回车网络传输的流程
    1、浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址。
    2、解析出ip地址后,根据IP地址和默认端口,和服务器建立TCP连接。
    3、浏览器发出读取文件(URL域名后面的部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的4、第三个报文传送给服务器。
    5、服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器。
    6、释放TCP链接。
    7、浏览器将该html文本显示内容。
    5、问的深一点的可能涉及到网络架构,每层有什么协议,FTP 相关原理,例:TCP 建立连接后,发包频率是怎么样的?

  • 相关阅读:
    Hessian简要入门
    MapReduce启动的Map/Reduce子任务简要分析
    hive默认分隔符引起的日志分割问题
    Spring MVC中发布Restful Web服务
    JPA基本介绍以及使用
    hsqldb简单使用总结
    Vim编辑器基本操作学习(二)
    locale错误导致Java中文乱码错误的总结
    Vim编辑器基本操作学习(一)
    hadoop map任务Combiner被调用的源码逻辑简要分析
  • 原文地址:https://www.cnblogs.com/awkflf11/p/16219199.html
Copyright © 2020-2023  润新知