网络通信TCP


TCP:传输控制协议

  • 稳定
  • 相对于UDP慢一些
  • web服务器都使用TCP

UDP:用户数据包协议

  • 不稳定
  • 相比较TCP快一些

TCP服务端

from socket import *

# 根据SOCK_STRESM还是SOCK_DGRAM确定是UFP还是TCP
serverSocket = socket(AF_INET, SOCK_STREAM)
# 绑定监听地址与端口
serverSocket.bind(('', 8999))
#  使用socket创建的套接字默认的属性是主动的,使用listen将其变为被动的,这样就可以接收别人的链接了
# 最大连接数
serverSocket.listen(5)
# clientSocket 表示这个新的客户端  clientInfo表示这个新的客户端的ip以及port
clientSocket, clientInfo = serverSocket.accept()

recvData = clientSocket.recv(1024)

print("%s:%s" % (str(clientInfo), recvData))

clientSocket.send("heihei".encode('utf-8'))

clientSocket.close()

serverSocket.close()

TCP客户端

from socket import *

clientSocket = socket(AF_INET, SOCK_STREAM)

clientSocket.connect(('192.168.1.11', 8999))

# TCP客户端已经连接好了服务器 在以后的发送不用添加IP和Port 而UDP需要
clientSocket.send("haha".encode('utf-8'))

recvDate = clientSocket.recv(1024)

print("recvData:%s" % recvDate)

clientSocket.close()

端口

IP决定数据发送到哪台电脑上
端口决定数据发送到哪个进程上

IP地址

在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就
是属于私网IP,不在公网中使用的,它们的范围是:

10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255

IP地址127.0.0.1~127.255.255.255用于回路测试,
如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。


IP地址分类.png

网络掩码

A类地址的掩码:255.0.0.0
B类地址的掩码:255.255.0.0
C类地址的掩码:255.255.255.0

IP地址与网络掩码按位与操作生产网络号 确定ip地址属于哪类地址哪个网段

MAC地址(网卡的序列号)

网卡的序列号 主机的IP地址 进程的端口号确保数据的稳定传输

ping命令使用的是ICMP协议
ARP协议获取mac地址

集线器和交换机的区别

集线器是以广播的形式发送数据包
交换机可以有学习的过程,不是以广播的形式发送数据包

路由器

连接不同的网络,使不同网段的ip可以互相通信


Mac地址,在两个设备之间通信时在变化
Ip地址 在整个通信的过程中都不会发生任何变化

Ip:标记逻辑上的地址
Mac:标记实际转发数据时的设备地址
Netmask:和ip地址一起确定网络号
默认网关:发送的ip不在同一个网段内,那么会把这个数据转发给默认网关

DNS服务器:用来解析域名

DHCP协议自动分配IP地址

三次握手

三次握手过程.png

四次挥手

四次挥手过程.png

TTL:表示经过的路由器个数,经过一个路由器TTL减少1

你可能感兴趣的:(网络通信TCP)