1.理解TCP

1.1 寻址

首先任何基于TCP/IP的网络,每台机器都有唯一的IP地址,只需要知道接受者机器的IP地址,信息就可以传送过去。

其次,TCP通过使用端口号来知道机器究竟是哪个程序应该接收传来过来的数据,每个程序都使用唯一一个端口号,有时候这些端口号是事先知道的,有时候是随机指定的。

再次,让用户记住一串诸如65.215.22.125的数字是非常困难的,于是使用了DNS。当我们想要和一个远程机器建立连接的时候,就可以申请连接该机器IP地址相对应的DNS,例如 www.baidu,.com DNS会给我们提供一个IP地址,接下来就可以建立连接了。

1.2 TCP的可靠性

1) 为了防止数据在传输的过程中被损坏,每个信息包都包含一个校验码。来保证传输过程中信心包没有被更改。

2)为了防止信息包丢失,TCP的重传机制来保证。

3)为了防止信息包重复或者顺序错误,TCP每传送一个信息包都会传送一个序号。接收方会检查这个序号,确保收到该信息包,并吧全部信息包按照顺序重新合并。同时如果接收方看到了一个已经看过的序号,该信息包就会被丢弃。

1.3 路由

为了保证信息包可以从您的机器到达全球任何一个地方,我们采用路由,并使用traceroutr来查询经过的路由。

1.4 安全

不希望被陌生人看到你访问的网站或者传输的数据。

有可能您的链接会被拦截转向另一台机器。

2.使用客户/服务器模式

2.1 服务器端端口

在客户/服务器模式中,服务器通常是侦听一个大家都知道的端口。国际因特网地址分配委员会维护着官方已分配的端口列表。如果您编写了一个服务器,它的服务不在这个列表,那么就应该选择一个比1024大而且在您的机器上没有被占用的端口号,端口号最大为65535。

2.1 客户端端口号

客户端端口号不是很重要,一般情况下是由操作系统随机选择一个没有被使用的端口号,当服务器收到一个连接请求的时候,请求中带有客户端的端口号,数据会被传输到该端口号上。因此服务器可以喝客户端挑选任意的端口号很好的工作。

2.3 理解UDP

它被用来从一个系统向其他系统传送非常短的消息,它只提供一个保证:您收到的数据时完整的。

通常UDP会用在客户端向服务器申请一个比特的信息,如果没有收到答复会继续申请。

python 网络编程(一)---基础的更多相关文章

  1. python网络编程——socket基础篇

    python的网络编程比c语言简单许多, 封装许多底层的实现细节, 方便程序员使用的同时, 也使程序员比较难了解一些底层的东西. 1 TCP/IP 要想理解socket,首先得熟悉一下TCP/IP协议 ...

  2. Python网络编程(基础总结、 入门经典)

    Linux下文件类型:     bcd -lsp          b(块.设备文件)          c(字符设备文件)          d(目录)          -(普通文件)       ...

  3. Python网络编程之基础

    计算机网络基础 网络到底是什么?计算机之间如何通信的? 早期:联机 以太网:局域网与交换机 ******广播 主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发, 所 ...

  4. 图解Python网络编程

    返回目录 本篇索引 (1)基本原理 (2)socket模块 (3)select模块 (4)asyncore模块 (5)asynchat模块 (6)socketserver模块 (1)基本原理 本篇指的 ...

  5. Python网络编程基础pdf

    Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...

  6. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  7. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程 并行与并发 同步与异步 阻塞与非阻塞 CPU密集型与IO密集型 线程与进程 进 ...

  8. 好书推荐---Python网络编程基础

    Python网络编程基础详细的介绍了网络编程的相关知识,结合python,看起来觉得很顺畅!!!

  9. Python网络编程基础|百度网盘免费下载|零基础入门学习资料

    百度网盘免费下载:Python网络编程基础|零基础学习资料 提取码:k7a1 目录: 第1部分 底层网络 第1章 客户/服务器网络介绍 第2章 网络客户端 第3章 网络服务器 第4章 域名系统 第5章 ...

  10. Python网络编程之网络基础

    Python网络编程之网络基础 目录 Python网络编程之网络基础 1. 计算机网络发展 1.1. OSI七层模型 1.2. 七层模型传输数据过程 2. TCP/IP协议栈 2.1 TCP/IP和O ...

随机推荐

  1. shell复习笔记----入门知识

    Unix 简史 UNIX 最初是由贝尔实验室(Bell Telephone Laborataries)的计算机科学研究中心开发的,第一版诞生于1970年--也就是在贝尔实验室退出Multics项目不久 ...

  2. ionicPopup确认对话框

    $ionicPopup.confirm({ title: $rootScope.app_name, template: 'Do you want to add this to database?', ...

  3. 1062: [NOI2008]糖果雨 - BZOJ

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1062 神题一个,直接讲思路了(全都是看别人的) 首先我们把一个云用一个平面上的点( ...

  4. 酷摄影:关于梦 - Miki takahashi

    这组摄影来自于日本东京摄影师 Miki takahashi 是一组双重曝光摄影,分开看也许很平常,但是结合在一起却非常有韵味. [gallery]

  5. 详细解析: VictorOps 是如何利用和完善 ChatOps?

    ChatOps,即聊天应用,在软件开发中被广泛应用改进开发者之间的沟通.简单地说,ChatOps 是将内容或行动 (或两者) 迁移到聊天客户端.这样做之后,企业内的所有团队都能分享重要信息,行动,及其 ...

  6. 【形式化方法:VDM++系列】4.VDM实战1——铁路费用计算

    又有将近2个月没更新博客了啊!winter holiday简直玩儿疯了的说!结果假期前学习的形式化方法已经忘了大半!面对期末作业,大脑一片空白.于是,赶快复习了一下之前学习的姿势! 这次的主要任务是完 ...

  7. 2013 Multi-University Training Contest 5 k-th point

    刚开始我也不知道怎么做,后来慢慢就推出来了…… 对于样例 2 1 0,结果是2/3 2 2 0,结果是4/5 3 2 0,结果是6/7 3 2 1,结果是9/14=6/7*3/4 …… 之后就会发现每 ...

  8. codeforces #305 D Mike and Fish

    正解貌似是大暴搜? 首先我们考虑这是一个二分图,建立网络流模型后很容易得出一个算法 S->行 容量为Num[X]/2; 行->列 容量为1 且要求(x,y)这个点存在 列->T 容量 ...

  9. [itint5]环形最大连续子段和

    http://www.itint5.com/oj/#9 一开始有了个n*n的算法,就是把原来的数组*2,由环形的展开成数组.然后调用n次最大子段和的方法.超时. 后来看到个O(n)的算法,就是如果不跨 ...

  10. eclipse中的输入提示怎么设置

    对于大多数的开发人员来说,打代码是一件非常繁琐的事情,eclipse中为我们提供了自动提示的功能,但是默认的提示只有当我们输入小数点后才能出现提示框,那么我们如何设置eclipse,能够让它为我们提示 ...