http 与socket请求

本文介绍了HTTP请求的工作流程,从客户端的DNS解析、HTTP超文本传输协议到服务器端的IP解析、TCP协议处理,再到应用服务器的逻辑处理。强调了HTTP协议的灵活性和简单快速的特点,能够传输各种数据格式。此外,对比了HTTP 1.0和1.1的连接管理,包括无连接和持久连接的概念,并提及常见的请求方法如POST。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端:

应用层 dns解析  http 超文本传输协议 ,ipv4 ipv6 ,

传输层 socket  tcp 协议 

网络层:ip地址

物理层:网线 ,光纤 电话线


服务器端:

网络层:ip解析 

传输层 tcp协议 解析

应用层:web 服务器解析 http 

应用服务器:逻辑处理  ,io 操作 ...

然后 再 原路返回


互联网中网站的数据传输

特点 
1.支持客户端、服务器模式

2.灵活简单快速 

http协议几乎可以传输任意格式的数据(数字,字符串,json(列表元祖,字典)字节流(图片,文件,))

3.http1.0 无连接  发布了6版 向服务器请求 ,响应 后 断开,下次连接 不知道 啥时候 ,既连既断。多次访问,效率低。

http1.1 支持持久连接  。多长时间 断开,或 关闭 客户端。


4.无状态
不记录用户的访问信息(时间,用户,ip)。与cookies的 差别。http 本身不记录访问信息。浏览器做了。

数据传输规则

1        http请求
格式

请求行
请求报头
[空行]
请求正文


请求方法:

1.0方法

GET 获取URI所标识的所有资源 。 uri= :协议名称://域名.根域名/目录/文件名.后缀

POST 提交一定的附加数据用以获取相应的返回

1.1扩充

HEAD 获取URI所标识的所对应的响应消息报头
PUT  获取服务器的一个存储资源
DELETE  删除uri所标识的服务器端资源
TRACE   用于测试和诊断
CONNECT 保留的将来用
OPTIONS 请求服务器新能,用来查询服务器资源相关的信息

请求行格式: GET /index.html HTTP/1.1
请求头格式: 提供了请求的具体信息
Host: www.baidu.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64;rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
请求体 : 发送get请求参数,和post请求提交的内容

2      http响应


响应行
响应报头
[空行]
响应正文


响应码
1xx 提示信息,标识请求已经接受,正在处理
2xx 成功-访问已经成功,正确解析受理
3xx 重定向 完成任务要进行进一步的请求操作
4xx 客户端错误
5xx 服务器端错误


200 OK   标识访问成功
400 Bad Request  客户端请求语法有误,服务器不理解
401 请求未经授权
403 服务器收到请求,但是拒绝提供服务
404 请求的资源不存在或者URL错误
500 服务器端发生不可预期错误
503 服务器暂时不能处理请求,一段时间后可能可以


响应行格式:  HTTP/1.1版本  200响应码  OK 信息
响应报头格式: 同请求报头


响应内容: 将客户端请求得到的内容发送给客户端

超时检测


使用settimeout函数
如果到了指定的时间仍然没有连接请求则不再等待 
产生time out 异常

sockfd.settimeout(3)

在后续代码无需等待的IO也能执行时我们可以使用超时检测
防止持续等待

设置select 超时 

select 函数的第四个参数即为超时时间
select([],[],[],3)


广播


IP 分类


 A(1.0.0.1 - 126.255.255.255) 
 B(128.0.0.1 - 191.255.255.255)
 C(192.0.0.1 - 223.255.255.255)
 D(224.0.0.2 - 239.255.255.255)
 E(240.0.0.1 - 255.255.255.255)


当一个网络端向广播地址发送内容时,在该网段内所有的客户端都能收到消息。


广播所用的socket套接字为 数据报套接字



发送端


接收端 
(先启动接收端)

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值