• TCP的连接(三次握手)和释放(四次挥手)


    1 http都设置哪些header?

    http协议规定:一个完整的客户端发送给服务端的HTTP请求包括:

    (1)请求行:包括了请求方法、请求资源路径、HTTP协议版本,eg:GET/Server/image HTTP/1.1

    (2)请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息。

    Host:192.168.1.105:8080//客户端想访问的主机地址

    User-Agent:Mozilla/5.0 Firefox/3.0 (客户端的类型、客户端的软件环境)

    content-Type:文件类型

    content-Length:文件长度

    [request setValue:@"" forHTTPHeaderField:@""];

    (3)请求体:客户端发给服务器的具体数据。

    1 HTTP通信过程 - 响应

    客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端

    HTTP协议规定:1个完整的HTTP响应中包含以下内容

    状态行:包含了HTTP协议版本、状态码、状态英文名称

    HTTP/1.1 200 OK

    响应头:包含了对服务器的描述、对返回数据的描述

    Server: Apache-Coyote/1.1         // 服务器的类型

    Content-Type: image/jpeg         // 返回数据的类型

    Content-Length: 56811         // 返回数据的长度

    Date: Mon, 23 Jun 2014 12:54:52 GMT    // 响应的时间

    实体内容:服务器返回给客户端的具体数据,比如文件数据

    状态码

    英文名称

    中文描述

    200

    OK

    请求成功

    400

    Bad Request

    客户端请求的语法错误,服务器无法解析

    404

    Not Found

    服务器无法根据客户端的请求找到资源

    500

    Internal Server Error

    服务器内部错误,无法完成请求

    2 http与https区别?

    http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

    https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。

    https协议需要到ca申请证书,一般免费证书很少,需要交费。

    http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议

    http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

    http的连接很简单,是无状态的

    HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。

    3 TCP的连接(三次握手)和释放(四次挥手)

    TCP的连接(三次握手):

    第一次握手:客户机的 TCP 首先向服务器的 TCP 发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部 SYN 标志置为1。另外,客户机会随机选择一个起始序号seq=x(连接请求报文不携带数据,但要消耗掉一个序号)

    第二次握手:服务器的 TCP 收到连接请求报文段后,如同意连接,就会向客户机发回确认,并为该 TCP 连接分配 TCP 缓存和变量。在确认报文段中,SYN 和 ACK 都置为1,确认号字段为ack = x+1,并且服务器随机产生起始序号seq = y。确认报文段同样不包含应用层数据。

    第三次握手:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段 ACK 标志位置为1, 序号字段seq = x+1,确认号字段ack=y+1。

    SYN:同步位;seq :起始序号;ack:确认号字段

    1)SYN = 1, seq = x

    2)SYN = 1, ACK = 1, seq = y, ack = x+1

    3)ACK = 1, seq = x+1,ack = y+1

    TCP的释放(四次挥手)

    第一步:客户机打算关闭连接,就向其 TCP 发送一个连接释放的报文段,并停止发送数据,主动关闭 TCP 连接,该报文段的 FIN 标志位置为1, seq = u,它等于前面已传送过的数据的最后一个字节序号加1.

    第二步:服务器收到释放连接的报文段后即发出确认,确认号为ack = u+1,而这个报文段自己的序号seq=v,等于它前面传送过的数据最后一个字节的序号加1。此时,客户机到服务器这个方向的连接就释放了,TCP 连接处于半关闭状态,但服务器发送数据,客户机仍然要接受,即从服务器到客户机这个方向的连接并未关闭。

    第三步:若服务器已经没有要向客户机发送的数据,就通知 TCP 释放连接,此时其发出 FIN = 1的连接释放报文段。

    第四步:客户机收到连接释放的报文段后,必须发出确认。在确认报文段中,ACK=1,确认号ack=w+1,序号seq=u+1,此时TCP连接还没有释放掉,必须经过实践等待计时器设置时间 2MSL(最长报文段寿命 Maximum Segment Lifetime) 后,进入连接关闭状态。

    FIN:终止位;seq :起始序号;ack:确认号字段

    1)FIN = 1, seq = u

    2)ACK = 1, seq = v, ack = u+1

    3)FIN = 1, ACK = 1, seq = w,ack = u+1

    4)ACK = 1,seq = u+1, ack = w+1

    4 TCP和UDP的区别:

    TCP(传输控制协议)

           (1)建立连接,形成传输数据的通道

           (2)在连接中进行大数据传输(数据大小不收限制)

           (3)通过三次握手完成连接,是可靠协议,安全送达

           (4)必须建立连接,效率会稍低

    UDP(用户数据报协议)

           (1)将数据及源和目的封装成数据包中,不需要建立连接

           (2)每个数据报的大小限制在64K之内

           (3)因为无需连接,因此是不可靠协议

           (4)不需要建立连接,速度快

    5 OSI参考模型

     

    1)物理层:主要定义物理设备标准,如网线的接口类型、各种传输介质的传输速率等。主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是常说的数模与模数转换)。这一层的数据叫做比特(bit),主要设备:集线器

    2)数据链路层:主要将从物理层接收的数据进行MAC地址的封装与解封装。常把这一层的数据叫做帧,主要设备:网卡,交换机

    3)网络层:选择合适的网间路由和交换结点, 确保数据及时传送,将从下层接收到的数据进行IP地址的封装与解封装。常把这一层数据叫做数据包,主要设备:路由器。

    4)传输层:定义了一些传输数据的协议和端口,如TCP、UDP协议,主要将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,以往把这一层数据叫做段。

    5)会话层:通过传输层建立数据传输通路。在系统之间发起会话或者接受会话请求(设备之间需要互相认识)

    6)表示层:主要是进行对接收的数据进行解释、压缩与解压缩等,即把计算机能够识别的东西转化成人能够识别的东西(如图片、声音等)

    7)应用层:主要是一些终端的应用,比如说FTP(各种文件下载)、浏览器、QQ等,可以将其理解为在电脑屏幕上可以看到的东西,也就是终端应用。

    6 常见端口号:

    端口号

    协议

    关键词

    UNIX关键词

    描述

    1

    TCP

    TCPMUX

    -TCP

    复用器

    7

    TCP/UDP

    ECHO

    echo

    回送

    21

    TCP

    FTP

    ftp

    文件传输协议

    22

    TCP/UDP

    SSH安全

    Shell

    远程登录协议

    23

    TCP

    TELNET

    telnet

    远程登录

    25

    TCP

    SMTP

    smtp

    简单邮件传输协议

    53

    TCP/UDP

    DOMAIN

    nameserver

    域名服务器

    67

    UDP

    BOOTPS

    bootps

    引导协议服务器

    68

    UDP

    BOOTPC

    bootpc

    引导协议客户

    69

    UDP

    TFTP

    tftp

    简单文件传送协议

    79

    TCP

    FINGER

    finger

    Finger

    80

    TCP

    HTTP

    http

    超文本传输协议

    7 网络中常见的“ping”命令是什么协议?

    ping.exe 的原理,向指定的IP地址发送一定长度的数据包,按照约定,若指定IP地址存在的话,会返回同样大小的数据包,当然,若在特定的时间内没有返回,就是“超时”,就认为指定的IP地址不存在。由于ping使用的是ICMP协议(Internet Control Message Protocol)(Internet控制消息协议),有些防火墙软件会屏蔽ICMP协议,所以有时候ping的结果只能作为参考,ping不通过不一定说明对方IP不存在。

  • 相关阅读:
    微信公众平台开发(6) 微信退款接口
    shiro 认证和授权原理
    Shiro架构
    微信公众平台开发(5) 微信客服消息接口
    微信公众平台开发(4) 微信模板消息接口
    微信公众平台开发(3) 企业付款
    微信公众平台开发(1) 通用的工具类CommonUtil
    spring 源码构建
    springMvc配置拦截器无效
    IIdea使用CXF开发WebService
  • 原文地址:https://www.cnblogs.com/jiangyi-uestc/p/5915858.html
Copyright © 2020-2023  润新知