面试整理:网络编程

1、OSI七层模型

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

物理层:主要是基于电器特性发送高低电压(电信号),高电压1,低电压0,设备有集线器,中继器,双绞线等!  单位:bit比特

数据链路层:定义了电信号的分组方式     设备有:网桥、以太网交换机、网卡   单位:帧

网络层:主要功能是将网络地址翻译成对应的物理地址    路由

传输层:建立端口到端口之间的通信    tcp协议udp协议

会话层:建立客户端与服务端连接

表示层:对来自应用层的命令和数据进行解释,并按照一定的格式传送给会话层。如编码、 数据格式转换和加密解密,压缩解压缩"等

应用层:规定应用程序的数据格式

 (物、数、网、传、会、表、应)

2、三次握手四次挥手

TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,采用全双工通信。

那为什么需要三次握手呢?请看如下的过程:

A向B发起建立连接请求:A——>B;
B收到A的发送信号,并且向A发送确认信息:B——>A;
A收到B的确认信号,并向B发送确认信号:A——>B。
三次握手大概就是这么个过程。
通过第一次握手,B知道A能够发送数据。通过第二次握手,A知道B能发送数据。结合第一次握手和第二次握手,A知道B能接收数据。结合第三次握手,B知道A能够接收数据。

至此,完成了握手过程,A知道B能收能发,B知道A能收能发,通信连接至此建立。三次连接是保证可靠的最小握手次数,再多次握手也不能提高通信成功的概率,反而浪费资源。

那为什么需要四次挥手呢?请看如下过程:

A向B发起请求,表示A没有数据要发送了:A——>B;
B向A发送信号,确认A的断开请求请求:B——>A;
B向A发送信号,请求断开连接,表示B没有数据要发送了:B——>A;
A向B发送确认信号,同意断开:A——>B。
B收到确认信号,断开连接,而A在一段时间内没收到B的信号,表明B已经断开了,于是A也断开了连接。至此,完成挥手过程。

可能有捧油会问,为什么2、3次挥手不能合在一次挥手中?那是因为此时A虽然不再发送数据了,但是还可以接收数据,B可能还有数据要发送给A,所以两次挥手不能合并为一次。

挥手次数比握手多一次,是因为握手过程,通信只需要处理连接。而挥手过程,通信需要处理数据+连接。

作者:purple_force
链接:https://www.jianshu.com/p/bbb6261cb13e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
白话版理解

三次握手:

#SYC=1(建立连接)  ACK(确认请求)

1、客户端(Client)向服务端(Server)发一次请求(SYN=1,随机产生一个值seq=J)

2、服务端确认并回复客户端(ACK=1, SYC=1,并在seq基础上产生一个随机数发给客户端)

3、客户端检验确认请求(ACK=1)     此时客户端与服务端就建立了连接

四次挥手:

#FAN=1(断连接) ACK=1(确认请求)

1、客户端向服务端发一次请求(FAN=12、服务端回复客户端 (ACK=1)  (断开客户端—>服务端)

3、服务端再向客户端发请求(FAN=1)  (因为有数据传输,所以2、3不能合并)

4、客户端确认请求(ACK=1)        (断开服务端--->客户端)

3、TCP和UDP

tcp是基于连接的,必须先启动服务端,然后再启动客户端去连接服务端

udp是无连接的,先启动那一端都可以  (应用:QQ聊天)

4、浏览器上输入地址,回车然后发生了什么?(Http请求生命周期)

#1、域名解析
#2、连接成功
#3、浏览器发送数据
#4、服务端接收数据并处理再响应
#5、(服务端做的事比较复杂,如:Django、Flask)

5、谈谈你对Http协议的理解?

协议:短连接、无状态、请求头和请求体、响应头和相应体,请求头之间通过\r\n分割。
请求头User-AgentRefererHostCookie、Connection、Accept
请求方法'get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'
状态码
  200(请求成功)
  300(301:永久重定向、302:临时重定向)
  400(多见于语法错误,403:csrf、404:找不到页面)
  500(多见于服务器内部错误)

 6、Http和Https?

#Http: 80端
#https: 443端口

#- 自定义证书 
    - 服务端:创建一对证书
    - 客户端:必须携带证书
#- 购买证书
    - 服务端: 创建一对证书,。。。。
    - 客户端: 去机构获取证书,数据加密后发给咱们的服务单
    - 证书机构:公钥给改机构

 

posted @ 2018-05-12 16:13  ZhuGaochao  阅读(267)  评论(0编辑  收藏  举报