1, 传输模型
注意: TCP/IP 协议不是 TCP 和 IP 两个协议的合称, 而是指整个因特网中的 TCP/IP 协议的合称.
2,TCP 协议
(1)TCP 协议是一种面向连接的, 可靠的, 基于字节流的传输层通信协议.
(2) 建立连接模式 (三次握手)
(3) 断开连接模式 (四次挥手)
3,UDP 协议
(1)UDP 协议是无连接的, 不可靠的协议. 它只管发数据, 不管收不收的到数据.
(2)UDP 协议和 TCP 协议的比较:
a,UDP 协议是不安全的, 但是效率高.(不保证数据的完整性)
b,TCP 协议是安全的, 但效率不高.(保证数据的完整性)
(3)TCP 协议中如果数据丢失会进行重发, 并且打包数据进行传输数据, 但是 UDP 协议不会这样进行.
注意: 互联网中主要传输的两个协议是 UDP 协议和 TCP 协议.
4,IP 地址和端口
(1)IP 地址
a, 概念
IP 地址是互联网协议地址, IP 地址是是用来给 Internet 的电脑编号.
b,IP 地址格式
IP 地址是一个 32 位的二进制数, 通常用点分十进制来表示. IP 地址由网络地址和主机地址组成.
c, 按网络规模分类
A 类地址 (大型网络),B 类地址 (中型网络),C 类地址 (小型网络)
d, 按照用途分类
公有地址和私有地址. 公有地址是直接在互联网上使用的 IP 地址; 私有地址是局域网中使用的地址.(A 类私有地址的范围是 10.0.0.1~10.0.0.254,B 类私有地址的范围是 172.16.0.1~172.31.255.254,C 类私有地址的范围是 192.168.0.1~192.168.255.254)
(2) 端口
a, 分类可以分为虚拟端口和物理端口
虚拟端口指计算机内部或交换机内部的端口, 不可见的.(比如计算机中的 80 端口, 21 端口, 23 端口)
物理端口又被称为接口, 是可见端口.(比如 RJ45 网口)
注意: 计算机用整数表示端口; 一台电脑有 65536 个端口, 范围是 0~65535.
5, 套接字
(1) 定义
a, 套接字是基于 TCP,UDP 协议的一个接口 (接口中封装实现相应的的功能).
b, 实现程序在网络中的通信. Socket 是实现网络通信的基本技术之一.
c, 大多数网络软件是基于 Socket 来进行实现的.
d, 在进行通信之前, 必须先要创建套接字对象.
(2)python 中使用套接字
代码实例 (创建一个简单的同步阻塞并发服务器):
客户端代码:
- import Socket
- client=Socket.socket()
- client.connect(('填写服务器的地址', 服务器的端口号))
- while True:
- data=input(">>>>>")
- if data=='q':
- exit()
- else:
- client.send(data.encode("utf-8"))
- res=client.recv(1024)
- print(res.decode("utf-8"))
- client.close()
服务端代码:
- import Socket
- tcp_server=Socket.socket()
- tcp_server.bind((' ', 用一个端口号来指定服务器))
- tcp_server.listen(5)
- while True:
- conn,adrr=tcp_server.accept()
- while True:
- res=conn.recv(1024)
- if res:
- print(res)
- conn.sebd(res)
- else:
- conn.close()
- break
来源: http://www.jianshu.com/p/933ff1784e3e