网络编程基础/TCP协议三次握手四次挥手

网络编程:
就是通过让不同计算机上运行的程序可以进行通信
软件开发结构:
两个程序之间的通讯分为两种:
1,应用类程序 例如qq,微信
2,Web类程序,通过浏览器访问程序
客户服务端概念:
客户端(client):就是我们常用的微信等:
服务端(server):要一直运行给别人提供服务的机器
C/S架构:
client与server 就是客户端与服务端架构。

B/S架构:
B/S即: Browser与server,浏览器端与服务器端架构

计算机网络:
每台计算机都有一个全球唯一的标识IP地址,计算机需要有硬件设施网线和网卡,网卡用来链接网线,网卡具有全球唯一的物理地址(mac),长度是48位2进制,通常由12位16进制数标识,前六位是厂商编号,后六位是流水线号。
电脑上的每一个应用程序想运行必须占一个端口号。并且端口号同时间只能被一个应用程序占用。
每一台电脑上一共有65536个端口,端口的范围是065535。一般01023被一些其他应用已经占用,因此我们一般从1024开始指定端口。

TCP协议:
可靠地,面向链接的协议。
TCP协议的特点:
数据安全,速度略低,分为客户端和服务端
网络OSI七层架构:
表示层 会话层 应用层 传输层(TCP或者UDP传输控制协议)
网络层,IP地址 数据链路层(网卡地址mac) 物理层。
TCP的3次握手,4次挥手:
第一次握手:是客户端让服务器准备好资源。
第二次握手:服务端资源准备好了并且服务端问客户端资源有没有准备好。
第三次握手:客户端资源也准备好了。接下来才真正的发生数据。

解决面向可靠地链接
我要断开

我知道了,要断开了

告辞
1、UDP协议
UDP协议:面向无连接,数据不安全,速度快。不区分客户端与服务端。
2、TCP和UDP的对比
TCP–提供的是面向连接、可靠的服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP–是一个简单的不可靠的运输层协议。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

Socket是应用层与TCP/IP协议族通信的中间软件抽象层

服务器端
import socket
server=socket.socket(type=socket.SOCK_DGRAM)#创建一个服务器socket对象
server.bind(('10.10.42.192',9000))#监听本机9000端口
#接受从客户端发来的信息
while True:
    msg,addr=server.recvfrom(1024)
    msg = msg.decode('utf-8')
    print('客户端说:', msg)#接受客户端消息
    content=input(':')
    content=content.encode('utf-8')
    server.sendto(content,addr) #向客户端发送消息
    #关闭套接字
server.close()









客户端
import socket
client=socket.socket(type=socket.SOCK_DGRAM)#创建一个服务器socket对象
ip_port=('10.10.42.249',9000)#服务器地址端口
while True:
    content=input('客户端:')#输出自己的语言
    content=content.encode('utf-8')
    client.sendto(content,ip_port)#向服务器发送一条消息
    msg,addr=client.recvfrom(1024)#接受从服务器返回的一条消息
    msg=msg.decode('utf-8')
    print('服务端说',msg,addr)#输出服务端说

猜你喜欢

转载自blog.csdn.net/python20180218/article/details/88523841