python 网络编程

        几乎所有网络上的程序都在遵循着客户端服务器架构,都以互联网协议(IP)为通信标准,其中,我们用得最多的协议呢是(TCP/IP),它使得计算机之间的通信更像是读写文件。

        前文我们已经说到,web应用遵循客户端/服务器架构。我们这儿说的web客户端是指一个浏览器,它允许用户在万维网上查询文档。另一边的web服务器端则是运行在信息提供商的主机上的进程,这些服务器等待客户端以及其文档请求,进行相应的处理。

        客户端可以向web服务器端发出各种不同的请求,这些请求可能包括提交一个数据表单或者获取一份网页视图(举这两个例子的原因是待会我们做的练手项目将会用到它们)。web服务器端首先处理请求,然后会以特定的格式(HTML)返回给客户端浏览。

        web客户端和服务器端交互所用到的语言为:HTTP(超文本传输),他是TCP/IP的上层协议。需要注意的是HTTP属于无状态协议,因为其不跟踪一个客户端到另一个客户端的请求信息,也就是说服务器不记得一个请求和下一个请求之间的任何事情,如果应用程序想要跟踪一些信息,就必须自己跟踪,最常见的方法是使用cookie,我们在这就不多讲了。另外,关于HTTP需要多讲的是:一个URL我们用参数来补充,以提供更多的信息,例如使用搜索引擎是,细心的朋友会发现,在跳转界面的URL上会看见一种类似key=value的格式,例如:http://www.google.ca?1=php,就是在谷歌相关界面查询PHP的资料。

        使用IP网络协议的程序通过sockets(套接字)进行通信,每个socket(套接字)是一个点对点的通信信道一端,就像是电话呼叫一样,一端是你自己,一端是接线员,你得拨出相对应的电话号才能接通另一端,。一个socket是由一个定义了特定机器和端口的IP地址组成,而IP地址是由4个8位的数字构成,例如192.168.1.1;域名系统呢(DNS)会将这些数字匹配成类似于www.google.com这样便于记忆的符号名。

        至于端口号则是0-65535范围内的数字,其中,0-1023被保留用作与系统本身的使用,而任何人都可以使用余下的端口。在这儿,多提一点,正因为余下端口可以提供给任何人使用,因此,hacker会利用这些端口来进行一些攻击,如果大家感兴趣的话可以推荐大家在51cto上面找一款黑客的游戏练手,效果不错,可以让你掌握部分黑客攻防的基础知识。

关于TCP/IP:

        按照层次分为以下四层。应用层、传输层、网络层、数据链路层。分层的意义在于每层做自己职责内的事。

关于ip:

        作用在于把各种数据包准确无误的传递给对方

关于TCP:

        如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方

三次握手:

    A:在么?我有东西要给你

    B:在呢?

    A:哦,在就好,东西给你了,接着啊!

**********************************************************************************************************************************************************

        超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

简单来说,它描述了一种程序通过IP交换数据的方法.HTTP很简单:客户端发送一个请求让它他通过socket获得链接的内容,然后服务器发送一些数据作为响应,或由程序动态生成,亦或者是两者结合。HTTP请求最重要的是:它仅仅只是一个文本而已,任何程序只要想要就可以创建或者解析一个。
HTTP的方法几乎都是通过post或者get两种方法,即提交表单或者上传文件 。接着我们还需要了解的就是我们可以通过URL来用作参数补充或者从中提取某些内容,例如:http://blog.csdn.net/topkipa/article/details/   我们可以从这个网址上看出我们访问的是csdn上的博客内容。又或者我们在百度上输入超文本传输按回车之后,我们可以在URL上找到一个:&wd=超文本传输协议。

 例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TCP 连接;
  3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
  5. 释放 TCP 连接;
  6. 浏览器将该 html 文本并显示内容;

最后,在这儿给大家稍微讲解一些抓包的简单知识,以上一个签名的py程序为例子;

我们在通过这个网站用python写一个借口,首先F12,点出Network,然后在姓名那输一个姓名,我们就可以在Network那找到一个包

在这个界面上我们可以看到,首先,用的是一个POST,也就是说,我们要将自己需要提交的东西通过POST的方法提交到制定的URL上,其次,我们的提交的格式以及签名设计的内容会在Form上得以体现,我们需要注意到的呢就是几个变量在这儿,最主要的就是id,关于它,我们可以在GUI界面通过一个name.get()方法得到然后把这个变量赋予给ID。其次,关于签名的返回,它返回的呢是一个GIF图片:

其中我们可以得到我们需要get到的图片的一个URL以及格式,然后,我们只需要把这个图片放到一个文件夹再调用它显示在GUI界面就行了,具体代码请参考另一片博客:

http://blog.csdn.net/topkipa/article/details/52279459

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值