嵌入式面经-网络协议

发布时间:2019-07-15 22:00:23发布者:Mr.Zhang阅读(395)

HTTP

HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和 Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入,开头的4个字母http就相当于通知浏览 器使用HTTP协议来和host所确定的服务器进行通讯。

 

原理

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的请求应答协议。

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

 

HTTP特点:

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。

2、灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。

3.无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

4.无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。

 

http与https的区别?

HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。

 

常用的请求方法:

GET:请求指定的页面信息,并返回实体主体。

POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

PUT:从客户端向服务器传送的数据取代指定的文档的内容。DELETE:请求服务器删除指定的页面。请求报文构成

http请求由请求行、消息报头、请求正文构成。请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本。响应报文构成。HTTP响应也由状态行、消息报头、空行和响应正文构成。

 

传输层的通信协议(TCP/UDP)

TCP提供一对一的、面向连接的可靠通信服务。TCP建立连接,对发送的数据包进行排序和确认,并恢复在传输过程中丢失的数据包。与TCP不同,UDP提供一对一或一对多的、无连接的不可靠通信服务。TCP和UDP都是IP层面的传输协议,是IP与上层之间的处理接口。

TCP是确认包的到达,所以不丢失包(数据),顺序也是好的。

UDP不会确认包的到达,所以可能会丢失数据包,当然顺序也有可能会乱。

除了这些以外:

1. TCP是面向连接(连接三次握手、断开四次挥手)的,所以稳定、可靠,那相对就慢了

比如平时的:大文件传输,右键,http等用的都是tcp协议

2. UDP是面向无连接的,所以不稳定,但是相对快,实时性高、传送数据大小限制

比如平时:做什么现场直播,视频通话啥的

(SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。ACK (Acknowledgement)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。FIN是用来扫描保留的端口,发送一个FIN包(或者是任何没有ACK或SYN标记的包)到目标的一个开放的端口,然后等待回应。许多系统会返回一个复位标记。

在客户机和服务器之间建立正常的TCP网络连接,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。

在客户端与服务器结束TCP连接时,客户端首先发送一个FIN包到服务器,服务器收到后反馈一个ACK,然后再发送一个FIN包给客户端,客户端接收后在放送一个ACK消息回应,到此此次连接完全断开。)

 

在TCP和UDP头部分,有“源端口”和“目标端口”段,主要用于显示发送和接收过程中的身份识别信息。IP 地址和端口号合在一起被称为“套接字”。TCP端口比较复杂,其工作方式与UDP端口不同。UDP端口对于基于UDP的通信作为单一消息队列和网络端点来操作,而所有TCP通信的终点都是唯一的连接。每个TCP连接由两个端点唯一识别。由于所有TCP连接由两对 IP 地址和TCP端口唯一识别(每个所连主机都有一个地址/端口对),因此每个TCP服务器端口都能提供对多个连接的共享访问.

 

TCP全称是Transmission Control Protocol,中文名为传输控制协议,它可以提供可靠的、面向连接的网络数据传递服务。传输控制协议主要包含下列任务和功能:

tcp功能

对程序发送的大块数据进行分段和重组。确保正确排序及按顺序传递分段的数据。
通过计算校验和,进行传输数据的完整性检查。根据数据是否接收成功发送肯定消息。通过使用选择性确认,也对没有收到的数据发送否定确认。为必须使用可靠的、基于会话的数据传输程序,如客户端/服务器数据库和电子邮件程序,提供首选传输方法。

 

TCP工作原理

首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;接收方主机在收到这个请求后向发送方主机回复一个同步/确认(SYN/ACK)应答;发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立.一旦初始的三次握手完成,在发送和接收主机之间将按顺序发送和确认段。关闭连接之前,TCP使用类似的握手过程验证两个主机是否都完成发送和接收全部数据。完成三次握手,客户端与服务器开始传送数据。

 

 

UDP全称是User Datagram Protocol,中文名为用户数据报协议(报文协议:短息等)。UDP 提供无连接的网络服务,该服务对消息中传输的数据提供不可靠的、最大努力传送。这意味着它不保证数据报的到达,也不保证所传送数据包的顺序是否正确。每个数据限制在64k以内。(存在掉帧、掉数据包)。

 

 

四、简述七层模型与四层模型的区别?列出常见的网络协议?
七层: OSI 开放系统互联参考模型,它是理论的,参考模型
物理层->数据链路层->网络层->传输层->会话层->表示层->应用层

(电脑)  (交换机) (路由器)

物理层:RJ45、CLOCK、IEEE802.3

数据链路层:PPP、FR、HDLC、VLAN、MAC

网络层:IP、IPX、OSPF、RIP、IGRP、ICMP、ARP、RARP

传输层:TCP、UDP、SPX

会话层:NFS、SQL、NETBIOS、RPC

表示层:JPEG、MPEG、ASII

应用层:Telnet、HTTP、FTP、WWW、NFS、SMTP

四层: TCP/IP模型 ,现在实际应用的这一层
网际接口层->互联网层->传输层->应用层

物理层: 主要定义的是—传输介质 比如 RJ-45等 这一层没啥协议,都是规范啥的

数据链路层:就是平时的局域网,局域网内的数据传输 MAC层

传输层:TCP、UDP

应用层:HTTP、HTTPS、DNS、SMTP 发送邮件端口、POP3收邮件端口
FTP端口,负责传出数据, 端口负责发起和建立连接TELNET
DHCP—动态主机配置协议, 客户端请求用的67端口,服务器回应用的是68端口

常见协议:
IP (Internet Protocol)网际协议
ICMP (Internet Control Message Protocol)网络控制信息协议 (平时的ping)
IGMP (Internet Group Management Protocol)组管理协议
NAT (Network Address Translation) 网络地址转换

 

Socket(套接字层、插座---AT&T)

Socket就是为网络服务提供的一种机制。它是使用标准Unix 文件描述符 (file descriptor) 和其它程序通讯的方式。套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:

(连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口)。

  在Unix中,网络即是socket,并不局限在TCP/UDP,  socket可以用于自定义协议。

通信的两端都是socket

网络通信其实就是socket间的通信

数据在来两个socket间通过io传输

Socket开始是纯c语言的,是跨平台的。

 

套接字有两个流:一个输入流和一个输出流

套接字的每一端都有两个流。

 

 

 

HTTP与TCP区别和联系

联系:http是要基于TCP连接基础上的,简单的说,TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输。http是用来收发数据,即实际应用上来的。

区别:TCP是底层通讯协议,定义的是数据传输和连接方式的规范。

      HTTP是应用层协议,定义的是传输数据的内容的规范
      HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP      

      HTTP支持的是www服务 ,而TCP/IP是协议 它是Internet国际互联网络的基础。TCP/IP是网络中使用的基本的通信协议。 TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。

 

为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

 

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

 

https://blog.csdn.net/qzcsu/article/details/72861891

 





本文转自博客园,原文地址:https://www.cnblogs.com/cyyz-le/p/11190017.html