1.HTTP请求有哪几种方式?
在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。
紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]
8种:
(1)get是从服务器上获取数据,post是向服务器传送数据。
(2)对于表单的提交方式,在服务器端只能用Request.QueryString来获取Get方式提交来的数据,用Post方式提交的数据只能用Request.Form来获取。
(3)一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。
◆200 (OK): 找到了该资源,并且一切正常。
◆304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
◆403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆404 (NOT FOUND): 在指定的位置不存在所申请的资源。
2.TCP和UDP有哪些区别?
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP对系统资源要求较多,UDP对系统资源要求较少。
3.TCP通过哪些措施来实现可靠的数据传输?
2、当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 (超时重发)
3、当TCP收到发自TCP连接另一端的数据,它将发送一个确认。 (对于收到的请求,给出确认响应)
4.详细描述建立TCP连接的三次握手过程,两次握手行不行?
- 客户端–发送带有 SYN 标志的数据包–一次握手–服务端
- 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
- 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端
两次握手不可以,因为三次握手后双方才能确认自己与对方的发送与接收是正常的
第一次握手:客户端什么都不能确认;服务器端确认了对方发送正常
第二次握手:客户端确认了:自己发送、接收正常,对方发送、接收正常;服务器端确认了:自己接收正常,对方发送正常
第三次握手:客户端确认了:自己发送、接收正常,对方发送、接收正常;服务器端确认了:自己发送、接收正常,对方发送接收正常
所以三次握手就能确认双发收发功能都正常,缺一不可。
5.详细描述关闭TCP连接的四次挥手过程,为什么要四次挥手?
断开一个 TCP 连接则需要“四次挥手”:
- 客户端向服务器端发送一个FIN报文段,提出停止TCP连接的请求
- 服务器收到FIN后,向客户端回一个ACK报文段,表示我同意你的关闭请求
- 然后服务器端再向客户端发送一个FIN报文段,请求关闭
- 客户端收到后,回复一个ACK报文段
客户端发送FIN报文段时,只是表示自己没有数据要发送了,但这时还可以接受来自服务器端的数据;当服务器端返回ACK报文段时,表示它已经知道客户端没有数据要发送了,但还可以发送数据到客户端;当服务器端也发送了FIN报文段时,这个时候就表示自己也没有数据要发送了;然后客户端收到后发送ACK报文段,表示知道了,彼此这才断开了连接。
举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。