美文网首页
TCP,UDP,HTTP,HTTPS(上)

TCP,UDP,HTTP,HTTPS(上)

作者: 简书取名好难 | 来源:发表于2017-10-27 21:45 被阅读24次

    对称加密算法:

      加密和解密用的是同一个密钥

    RSA:非对称加密:

      用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对用的私钥才能解密

    DNS:

      将域名解析成ip的系统

    IP:

      位于网路层,作用是把数据包发送给对方

    TCP:

      位于传输层,可靠的字节流服务,一个TCP连接中只能有2方通信,不能用于广播和多播而且并不能保证数据一定会被对方接收到,它所能提供的只有数据的可靠递送或故障的可靠通知(但他有提供一些可靠的机制比如重传)

    字节流服务:

      为了方便传输, 将大块数据分割成以报文段为单位的数据包进行管理

    TCP/ip协议分层

      TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等


      

    TCP/IP协议族按照层次由上到下,层层包装。

    Tcp三次握手

      三次握手即建立Tcp连接,就是指建立一个TCP连接时需要客户端与服务端总共发送3个包以确认连接的建立。socket编程中,这一过程由客户端来触发



      1.第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。


      2.第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。


      3.第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

    SYN攻击

      在3次握手过程中,Server发送SYN-ACK后,收到客户端的Ack之前TCP处于半连接状态,SYN攻击就是客户端在短时间内伪造大量不存在的ip地址,并不断向server发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。

    Tcp四次挥手


    第一次挥手(FIN=1,seq=x)
    假设客户端想要关闭连接,客户端发送一个 FIN 标志位置为1的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。

    发送完毕后,客户端进入 FIN_WAIT_1 状态。

    第二次挥手(ACK=1,ACKnum=x+1)

    服务器端确认客户端的 FIN 包,发送一个确认包,表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接。

    发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。

    第三次挥手(FIN=1,seq=y)

    服务器端准备好关闭连接时,向客户端发送结束连接请求,FIN 置为1。

    发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK。

    第四次挥手(ACK=1,ACKnum=y+1)

    客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。

    服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

    客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。

    Http:

      HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。

    参考:https://hit-alibaba.github.io/interview/basic/network/TCP.html?q=

    相关文章

      网友评论

          本文标题:TCP,UDP,HTTP,HTTPS(上)

          本文链接:https://www.haomeiwen.com/subject/rcndpxtx.html