案例目的:
    1:知道一个网站域名,怎么用代码将其解析为IP地址(DNS解析系统)
    2:编写一段代码(客户端)实现浏览器请求Web服务器的过程
    3:掌握格式化字符“\r”“\n”“\r\n” 的作用

    一:利用代码将网站域名解析为IP地址

    代码方法:套接字 . connect((“网站域名”,80)) 在 connect()方法底层,会自动将填写的域名解析为IP地址,从而与网站服务器建立 TCP 连接
    **
    注意事项:

    1:浏览器请求网站服务器的步骤:与网站服务器建立TCP连接→浏览器向服务器发送请求协议→网站服务器响应浏览器发送响应协议关闭TCP连接

    2:在 python 中编写TCP客户端的 connect()方法会
    自动网站域名解析为IP地址**,用来与网站服务端创建TCP连接

    3:网站服务器的端口默认为 80

    快速代码体验

    image.png

    二:python 编写代码模拟浏览器(客户端)请求百度服务器的流程

    流程:导入socket模块→创建TCP套接字→利用connect()方法与百度网站的服务器创建TCP连接→客户端利用套接字的send()方法向服务端发起请求协议→百度服务器响应客户端的请求协议客户端利用套接字的recv()方法接收服务器响应协议→利用字符串的切片响应体响应协议内分离出来→将响应体(有用文件)保存到文件内→关闭套接字

    快速代码体验:

    image.png

    注意事项:

    1:截取响应体的时候为什么要查找“\r\n\r\n”呢?因为响应协议响应体响应头中间相隔了“\r\n\r\n”,查找出“\r\n\r\n”位置截取字符串即可

    2:查找“\r\n\r\n”的时候,原始数据必须是字符串,而不是二进制数据,也就是代码中的 ws_data.decode().find(“\r\n\r\n”),将ws_data二进制数据转为字符串

    3:代码
    模拟浏览器客户端向服务器发送请求协议时,请求行的 HTTP 一定要大写!!!,否则会出现400错误


    image.png

    三:格式化字符“\r”与“\n”和”\r\n” 的作用

    \r”:不换行,将光标移动到本行行首
    “\n”:换行,但是光标不移动到行首
    “ \r\n”:相当于回车,换行并且光标移动至行首**