通信协议 http、tcp、udp

目录

[1. 五层网络协议](#1. 五层网络协议)

[2. http](#2. http)

[3. tcp、udp](#3. tcp、udp)

[4. tcp 3次握手、4次挥手](#4. tcp 3次握手、4次挥手)

[5. socket](#5. socket)

[6. httpclient 遇到的问题](#6. httpclient 遇到的问题)

[1. Q: 使用 EntityUtils.toString(responseEntity, "UTF-8") 中文乱码](#1. Q: 使用 EntityUtils.toString(responseEntity, "UTF-8") 中文乱码)

[2. Q: org.apache.http.NoHttpResponseException: 221.6.16.203:8890 failed to respond](#2. Q: org.apache.http.NoHttpResponseException: 221.6.16.203:8890 failed to respond)

[3. Q: java.net.SocketTimeoutException: Read timed out](#3. Q: java.net.SocketTimeoutException: Read timed out)

[4. Q: java.net.SocketException: Connect to 218.28.223.245:5500 /218.28.223.245 failed: Connection timed out](#4. Q: java.net.SocketException: Connect to 218.28.223.245:5500 [/218.28.223.245] failed: Connection timed out)

[5. Q: java.net.SocketException: Connection reset](#5. Q: java.net.SocketException: Connection reset)

[6. Q: java.net.ConnectException: Connection refused](#6. Q: java.net.ConnectException: Connection refused)


1. 五层网络协议

a. 应用层:收发数据,http、ftp 协议

b. 传输层:建立连接,tcp、udp 协议

c. 网络层:ip、arp 协议

d. 数据链路层

e. 物理层

2. http

a. 超文本传输协议,是一种无状态协议,一次请求 一次连接,建立在 tcp 基础之上

3. tcp、udp

a. tcp:传输控制协议 udp:用户数据包协议

b. tcp 需要建立连接;稳定可靠

c. udp 无需建立连接;存在丢包情况,适用 高速传输、时效性较高 场景

4. tcp 3次握手、4次挥手

a. 3次握手(建立连接)

a. 主机A 向 主机B 发送 SYN包

b. 主机B 向 主机A 发送 SYN+ACK包,ACK值为 主机A SYN+1

c. 主机A 向 主机B 发送 ACK包

b. 4次挥手(关闭连接)

a. 主机A 向 主机B 发送 FIN包

b. 主机B 向 主机A 发送 ACK包,ACK值为 主机A FIN+1

c. 主机B 向 主机A 发送 FIN包

d. 主机A 向 主机B 发送 ACK包

5. socket

a. 套接字,描述ip和port,建立网络连接时使用,通过socket发送请求、应答请求

b. socket 是对 tcp/ip 封装,是一套编程接口

6. httpclient 遇到的问题

1. Q: 使用 EntityUtils.toString(responseEntity, "UTF-8") 中文乱码

why: httpclient 会先根据 entity 获取 ContentType,再从 ContentType 获取 charset

如果charset为空,它会把传入的 charset 作为 charset,如果传入的charset也为空,它会把服务器默认的 charset 作为 charset

A: a. 先用 iso-8859-1 编码,再用 utf-8 解码,new String(EntityUtils.toString(response.getEntity()).getBytes("ISO-8859-1"), "UTF-8")

b. 直接读取流,response.getEntity().getContent()

2. Q: org.apache.http.NoHttpResponseException: 221.6.16.203:8890 failed to respond

A: 服务器防火墙设置 或 服务器负荷过重,虽接收请求,但没有能力处理请求

3. Q: java.net.SocketTimeoutException: Read timed out

A: 获取服务器响应数据超时

4. Q: java.net.SocketException: Connect to 218.28.223.245:5500 /218.28.223.245 failed: Connection timed out

A: 建立连接超时,例:网络中断

5. Q: java.net.SocketException: Connection reset

A: 原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,

发送的第一个数据包引发该异常(Connect reset by peer)。

另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。

简单的说就是在连接断开后 读和写操作引起的

6. Q: java.net.ConnectException: Connection refused

A: 连接被拒绝,例如:对方服务器关闭

相关推荐
XiaoMaqqqq10 小时前
目前知名的IP驱动产业新场景新工具有哪些
网络·python·网络协议·tcp/ip
尹人入圣13 小时前
市面上靠谱的IP驱动产业新场景新工具哪个好
网络·python·网络协议·tcp/ip
Caroline51613 小时前
GPT Image 2.5还能这么玩!一套提示词生成IP吉祥物,附完整案例
前端·gpt·tcp/ip
2301_8026510813 小时前
网络编程:UDP协议
网络·网络协议·udp
小此方14 小时前
Linux网络(十八):TCP连接管理详解:从三次握手、四次挥手到CLOSE_WAIT与TIME_WAIT,深入理解2MSL与端口复用
linux·网络·网络协议·tcp/ip
今年下半年19 小时前
记录一次IBMS物联网项目的架构设计及技术栈应用
物联网·websocket·网络协议·tcp/ip·微服务·udp·kafka
XUEYUAN52127 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
CHENKONG_CK7 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
z落落7 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp
captain3767 天前
HTTP(2)
java·网络·http·java-ee