1.安装包 wireshart2.udp是可以广播的,tcp不行。广播用不好就会产生广播风暴3.广播是需要就用,不需要就不用二.tcp协议,传输控制协议。udp,用户数据报协议tcp是稳定,一定能够保证数据收到,相对于udp要慢一些web服务器,一般都是使用的tcp。tcp应用场景较多服务器:1.创建套接字 socket()2.绑定 bind()3.监听 listen() 讲主动套接字变为被动套接字4.accept() 接收,等待别人进行打电话客户端:socket()client()网络通信过程面试题:打开浏览器的过程,输入www.baidu.com 的过程packet tracer 的过程下载软件 windows XP professlonal1.两台电脑能通信的前提是在相同的网段里2.多台电脑为什么不能把网线连接在一起3.交换机和集线器同网之间可以进行通信,跨网之间不能进行通信路由器: 链接不同的网络mac地址在两个设备通信时,在变化。ip地址在整个通信中都不会变化mac地址就是手拉手之间传递数据用的,除了这个没什么用1.访问百度浏览器问题1.看有无网关2.看是ip还是域名访问,ip的话就是三次握手3.如果是域名,需要解析 baidu对应的ip地址4,使用arp获取默认网关的mac地址5.组织数据发送给默认网关6.默认网管拥有转发数据的能力,把数据转发给路由器7.路由器根据路由协议,来选择一个合适较快的路径,转发数据给目的网关目的网关(dns服务器所在的网管),把数据转发给 dns服务器dns服务器查询解析出baidu.com 对应的 ip地址,并发他原路返回给请求这个域名的client得到 baidu.com 对应的ip地址后,会发送tcp三次握手,进行链接使用http协议发送请求数据给web 服务器4.web服务器收到数据请求之后,通过查询自己的服务器得到相应的结果,原路返回给浏览器浏览器收到数据后,通过浏览器自己的渲染功能来显示这个网业浏览器关闭tcp链接,即4此挥手完成整个访问过程tcp三次握手,四次挥手三次握手和四次挥手能不能成功,直接影响到 accept(),进行链接先进行三次握手,在进行四次挥手如果不挥手,就会占用资源长短链接长链接是持续不断的进行访问一个进程可以有无数个套接字服务端的最大链接数为5,客户端的最大链接数是 20,服务端一次接受的数据是5个linux中的最大值是自己设定的,根据内核里面的配置网络攻击dns攻击分辨钓鱼网站,先看域名是否正确,然后输入一个假的密码nslookup + 域名 查看域名对应哪个ippython 使用原始套接字
#服务器from socket import *#1创建套节奏,tcp当中用SOCK_STREAMserverSocket = socket(AF_INET,SOCK_STREAM)# 2绑定任意ip地址,端口号为8899serverSocket.bind(('',8899))#3进行监听,从主动变为被动,里面的数字是正数就可以serverSocket.listen(5)#客户端中只有一个套接字,服务端有两个clientSocket = socket(AF_INET,SOCK_STREAM)clientSocket.connect(('192.168.0.107',8899))#4进行接收返回数据,返回值等于一个元祖,第一个值是一个新的套接字,第二个值是对方的ip和端口号#clientSocket 表示新的客户端#clientinfo 表示新的客户端和端口clientSocket.send('haha'.encode('utf-8'))clientSocket,clientInfo = serverSocket.accept()#接受1024个字节print(1)recvDate = clientSocket.recv(1024)print("%s:%s"%(str(clientInfo),recvDate))#关闭当前套接字clientSocket.close()#关闭套餐套接字serverSocket.close()# tcp客户端#客户端中只有一个套接字,服务端有两个# tcpLliebtSocket = socket(AF_INET,SOCK_STREAM)
# tcp客户端from socket import *#客户端中只有一个套接字,服务端有两个clientSocket = socket(AF_INET,SOCK_STREAM)#tcp客户端已经来凝结好了服务器,所以在以后的数据发送中,不需要填写对方的ip和port#udp在发送数据的时候,因为没有之前的连接,所以需要在每次发送汇总中都要接受ip和portclientSocket.connect(('192.168.0.107',8989))#进行发送数据clientSocket.send('haha'.encode('utf-8'))recvData = clientSocket.recv(1024)print('recvData:%s'%recvData)clientSocket.close()
#服务端from socket import *#1创建套节奏,tcp当中用SOCK_STREAMserverSocket = socket(AF_INET,SOCK_STREAM)# 2绑定任意ip地址,端口号为8899serverSocket.bind(('',8800))#3进行监听,从主动变为被动,里面的数字是正数就可以serverSocket.listen(5)#4进行接收返回数据,返回值等于一个元祖,第一个值是一个新的套接字,第二个值是对方的ip和端口号#clientSocket 表示新的客户端#clientinfo 表示新的客户端和端口clientSocket,clientInfo = serverSocket.accept()#接受1024个字节recvDate = clientSocket.recv(1024)print("%s:%s"%(str(clientInfo),recvDate))#关闭当前套接字#客户端中只有一个套接字,服务端有两个clientSocket = socket(AF_INET,SOCK_STREAM)#tcp客户端已经来凝结好了服务器,所以在以后的数据发送中,不需要填写对方的ip和port#udp在发送数据的时候,因为没有之前的连接,所以需要在每次发送汇总中都要接受ip和portclientSocket.connect(('192.168.0.107',8989))#进行发送数据clientSocket.send('haha'.encode('utf-8'))recvData = clientSocket.recv(1024)print('recvData:%s'%recvData)clientSocket.close()clientSocket.close()#关闭套餐套接字serverSocket.close()