网络编程面试题(1)

网络编程面试题(1)

1、TCP(Transmission Control Protocol)

TCP传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。通讯双方建立一次tcp连接,需要经过三次步骤:

  • 1、客户端发送syn包(syn=j)到服务器,并入SYN_SEND状态,等待服务器确认。
  • 2、服务器收入syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),既SYN+ACK包,此时服务器进入SYN_RECV状态。
  • 3、客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

(tcp在握手过程中并不携带数据,而是在三次握手完成之后才会进行数据传送)

SYN:synchronous 建立联机
ACK:acknowledgement 确认
SYN_SENT 请求连接
SYN_RECV 服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态,再进一步接收到客户端的ACK就进入ESTABISHED状态。

2、UDP(User Datagram Protocol )

UDP是非面向连接协议,使用udp协议通讯并不需要建立连接,它只负责把数据尽可能发送出去,并不可靠,在接收端,UDP把每个消息断放入队列中,接收端程序从队列中读取数据。

3、socket(嵌套字)

socket是一组实现TCP/UDP通信的接口API,既无论TCP还是UDP,通过对scoket的编程,都可以实现TCP/UCP通信。(TCP或UDP是一种计算机网络通信中在传输层的一种协议,可以简单的理解成是一种约定,只有履行合同才是实质性的行动,所以无论是TCP还是UDP要产生作用,都需要有实际性的行为去执行才能体现协议的作用。socket就是实现这种作用的方法)socket作为一个通信链的句柄,它包含了网络通信必备的5种信息。
1、连接使用的协议。
2、本地主机的IP地址。
3、本地进程的协议端口。
4、远地主机的IP地址。
5、远地进程的协议端口。
socket包含了通信本方和对方的ip和端口以及连接使用的协议(TCP/UDP)。通信双方中的一方(客户端)通过socket对另一方(服务端)发起连接请求,服务端在网络上监听请求,当收到客户端发来的请求之后,根据socket里携带的信息,定位到客户端,就相应请求,把socket描述发给客户端,双方确认之后连接就建立了。
socket连接过程的三个步骤:
1、服务器监听:服务器实时监控网络状态等待客户端发来的连接请求
2、客户端请求:客户端根据远程主机服务器的IP地址和协议端口向其发起连接请求
3、连接确认:服务端收到socket的连接请求之后,就响应请求,把服务端socket描述发给客户端,客户端收到后一但确认。则双方建立连接,进行数据交互。

socket连接一旦建立就保持连接状态,而HTTP连接则不一样,它基于tcp协议的短连接,也就是客户端发起请求,服务器响应请求之后,连接就会自动断开,不会一直保持。

4、URL(Uniform Resource Locator)统一资源定位符

URL是因特网上标准的资源地址
URL标准格式:协议类型:[//服务器地址[:端口号]][/ 资源层级UNIX文件路径]文件名?查询
URL的语法规则:scheme://host/domain:port/path/filename
1、scheme:定义因特网服务的类型,最常见的有http。
2、host:定义域主机(http默认主机是www)。
3、domain:定义因特网域名,比如“www.baidu.com”。
4、path:定义服务器上的路径。
5、filename:资源名)

scheme类型
1、http 超文本传输协议:以http://开头的不同网页,不加密
2、https 安全超文本传输协议。安全网页,加密所有信息交换
3、ftp 文件传输协议 用于将文件下载或上传
4、file 本地文件

HTTP协议是应用层协议,基于TCP协议,用于包装数据,程序使用它进行通信,可以简单高效的处理通信中数据的传输和识别处理

5、DNS(Domain Name Server)域名服务器

DNS是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。
在浏览器输入域名后的解析过程:

  • 浏览器根据地址去本身缓存中查找dns解析记录,如果有,则直接返回IP地址,否则浏览器会查找操作系统中(hosts文件)是否有该域名的dns解析记录,如果有则返回。
  • 如果浏览器缓存和操作系统hosts中均无该域名的dns解析记录,或者已经过期,此时就会向域名服务器发起请求来解析这个域名。
  • 请求会先到LDNS(本地域名服务器),让它来尝试解析这个域名,如果LDNS也解析不了,则直接到根域名解析器请求解析。
  • 根域名服务器给LDNS返回一个所查询余的主域名服务器(gTLDServer)地址。
  • 此时LDNS再向上一步返回的gTLD服务器发起解析请求。
  • gTLD服务器接收到解析请求后查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server通常就是你注册的域名服务器(比如阿里dns、腾讯dns等)。
  • Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器。
  • 返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间有TTL值控制。
  • 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。

6、HTTP请求发起和响应

在一个web程序开发中,一般都有前端和后端之分,前端负责向后端请求数据和展示页面,后端负责接收请求和做出响应发回给前端,他们之间的协作桥梁是API,而API其实就是一个URL,作为HTTP连接的一种具体载体。

用户输入URL到浏览器显现给用户页面经过了什么过程?

  • 用户输入URL,浏览器获取到URL。
  • 浏览器(应用层)进行DNS解析(直接输入IP地址既跳过该步骤)。
  • 根据解析出的IP地址+端口,浏览器(应用层)发起HTTP请求,请求中携带(请求头header(也可细分为请求行和请求头)、请求体body)。
  • 请求到达传输层,tcp协议为传输报文提供可靠的字节流传输服务,它通过三次握手等手段来保证传输过程中的安全可靠。通过对大块数据的分割成一个个报文段的方式提供给大量数据的便携传输。
  • 到网络层, 网络层通过ARP寻址得到接收方的Mac地址,IP协议把在传输层被分割成一个个数据包传送接收方。
  • 数据到达数据链路层,请求阶段完成。
  • 接收方在数据链路层收到数据包之后,层层传递到应用层,接收方应用程序就获得到请求报文。
  • 接收方收到发送方的HTTP请求之后,进行请求文件资源(如HTML页面)的寻找并响应报文。
  • 发送方收到响应报文后,如果报文中的状态码表示请求成功,则接受返回的资源(如HTML文件),进行页面渲染。

header包含内容:
1、请求的方法(get、post、put…)
2、协议(http、https、ftp、sftp…)
3、目标url(具体的请求路径已经文件名)
4、一些必要信息(缓存、cookie之类)。

body包含请求的内容

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值