通信协议 http、tcp、udp
目录1. 五层网络协议
2. http
3. tcp、udp
4. tcp 3次握手、4次挥手
5. socket
6. httpclient 遇到的题目
1. Q: 使用 EntityUtils.toString(responseEntity, "UTF-8") 中文乱码
2. Q: org.apache.http.NoHttpResponseException: 221.6.16.203:8890 failed to respond
3. Q: java.net.SocketTimeoutException: Read timed out
4. Q: java.net.SocketException: Connect to 218.28.223.245:5500 failed: Connection timed out
5. Q: java.net.SocketException: Connection reset
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
https://i-blog.csdnimg.cn/direct/5eeeb32290be40dcbfdc6cea644bd294.jpeg
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 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: 毗连被拒绝,例如:对方服务器关闭
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]