传输层协议:
UDP:用户数据报,面向无连接,通信效率高,常用于音频视频传输,但是不能保证数据完整性
TCP:传输控制协议,通过三次握手建立连接,实现可靠无差错的数据传输服务。
java.net.Socket(客户端)、ServerSocket(服务器端)
套接字:包括IP和端口号的网络单位
获取套接字输入输出字节流:getOutputStream()
、getInputStream()
,其中的write、read方法获取的同样是字节流
TCP
三次握手:
实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
四次挥手:
TCP的连接是双向的,当某一方确认自己数据发送完成后(FIN+ACK)也需要等待另一方确认自己数据发送完成(FIN+ACK)
当最后一个FIN-ACK 发送过后需要等待二倍报文最大生存时间,如此FIN发送方在确认超时后仍然可以有一倍报文最大生存时间可以重发
HTTP状态码
类别 | 原因短语 | |
---|---|---|
1xx | Informational(信息性状态码) | 接受的请求正在处理 |
2xx | Success(成功状态码) | 请求正常处理完毕 |
3xx | Redirection(重定向) | 需要进行附加操作以完成请求 |
4xx | Client error(客户端错误) | 客户端请求出错,服务器无法处理请求 |
5xx | Server Error(服务器错误) | 服务器处理请求出错 |
201 Created :使用POST请求,创建成功
301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL;
302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL;
400 Bad Request:表示请求报文中存在语法错误;
401 Unauthorized access:没有权限的访问
403 Forbidden:服务器拒绝该次访问(访问权限出现问题)
404 page Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用;
405 methods not allowed:请求方法不对,或者参数错误
503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求
500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时;
GET&POST
采用 GET 方法向服务器上传数据时,一般将数据添加到 URL 后面,并且二者用「?」连接,各个变量之间用「&」连接。由于对 URL 的长度存在限制,因此采用这种方法能上传的数据量非常小,通常在 1024Byte 左右。而 POST 方法传递数据是通过 HTTP 请求的附件进行的,传送的数据量更大一些,一般默认为不受限制的。
由于 GET 方法上传的数据是添加在 URL 中的,因此上传的数据被彻底「暴露」出来了,本身存在安全隐患,尤其是当用户需要向服务器提交一些敏感信息时。而 POST 方法向服务器提交的内容在 URL 中并没有明文显示,对用户都是不可见的,所以,安全性更好一些。
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。
DNS缓存
DNS缓存不仅仅产生于操作系统,在浏览器和应用程序以及IPS网络运营商都会对DNS进行缓存,下面详细讲解这些DNS缓存的位置及清空的方法
#DOS
ipconfig /flushdns
HTTP:1.0、1.1、2.0
请求行:GET /java.html HTTP/1.1
一般用GET的请求查询数据【URL地址后面带的参数不能超过1K】
用POST请求向服务器发送数据,数据传输无大小限制
状态行: HTTP版本号 状态码 原因叙述
HttpServletResponse:由状态行、实体内容、消息头【编码格式等】、一个空行组成
HTTP请求报文构成
- 请求行:包括请求方法、URL、协议/版本
- 请求头(Request Header)
- 请求正文
长连接&短连接
长连接多用于操作频繁,点对点的通讯,使用同一个TCP连接来发送和接收多个HTTP请求/应答,节省TCP网络调用建立连接三次握手的时间,而短连接能够减小服务器负担,可以有效应对高并发场景
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通