Socket Basic

OSI(Open System Interconnection)

OSI 7 layers

# socket网络编程.py

# socket对所有上层协议得底层封装

# socket对TCP/IP 封装

# 在IP地址下可以有port, total number is 65535

# 网络通信

网络通信中的所有的类型数据的传输,不同的类型有不同的协议来支持。

http 网站

smtp email

dns 把域名解释成IP地址 例如 域名为cnblogs 但是IP地址是https://www.cnblogs.com/yiwangzhibujian/p/7107785.html

ftp 下载上传图片

ssh 连到远程机器上 执行一条命令 远程机器执行完 然后返回一条命令

smp 做网络监控的

icmp 做ping包的 测试网络通不通, 这个在网络层

dhcp 做IP地址分配的

不同的协议 都是数据流的交换

数据的交换的本质 就是 发 和 收

从A 机器 将数据 传到 B机器 或相反

——————————————————————网络OSI七层模型——————————————————

应用 所有的协议大部份都是在传输层之上的应用层

表示

会话

传输 这之上的是要定义语言的类型 例如 http

你是要什么类型的传输

网络传输的规则两种

1 TCP/IP 三次握手 四次断开,

三次握手

syn

A------------------>>>>>B A给B发送一个信号,我要跟你开始通信了

syn+ack

A<<<<<----------------- B 当B收到后 会发送给A一个ack 和syn应答,(acknowledge)我在,你要干嘛。

ack

A------------------>>>>>B 然后A会给B发送一个ack说 我收到了你的响应

2 UDP 不安全的信息发送,这种不管B在不在都发,可能会丢包

视屏可能还用UDP

网络IP层 这一层可以识别IP地址,有了IP地址我们就能用它来找到对方的机器,

这一层只是意味着双方连上了

都互相说了 喂 你好

数据链路 不认识 IP地址 只认识 mac地址(就是物理地址) (在terminal输入 ipconfig /all 来查看)

他是一个16进制的 地址

计算机不认识 IP地址,他只认识0101010101

物理层

——————————————————————socket——————————————————————

这些所有的协议的收和发的封装 就是socket

也是对各个协议 的自身的OSI模型封装,这样我们两个电脑就直接调用socket就可以互相打电话联系了就好了

——————————————简单的说 实现通信 要通过IP+端口——————————————————

如果只有IP地址 那么只能访问 机器 但不知道访问谁?只有IP是分不出来的

一个IP上的端口有65535个port

那么就是找到IP然后拨分机 就是port号

简单的说 实现通信 要通过IP+端口

一个网卡对应一个IP 0,0,0,0 就可以监听多个网卡

-------------socket families 网络层相当于地址簇-------------

socket.AF_UNIX 首先 进程 之间是无法直接通过内存来通信的 例如 qq 读取 不了word中的内容

本机想进行通信要用 AF_UNIX来通信

socket.AF_INET IPV4

socket.AF_INET IPV6

————————————————Socket Types—————————————————————————————

socket.SOCK_STREAM #for tcp

socket.SOCK_DGRAM #for udp 这是传输层

socket.SOCK_RAW 这是在IP层 可以修改IP地址头

socket.SOCK_RDM #是一种可靠的UDP形式,即保证交付数据报但不保证顺序。

Ethan Zhaosocket, OSI