应用层
UDP套接字编程
套接字分组上有目的地址和源地址,目的地址可能由我们指定,源地址也就是发送方的IP地址和端口号,则由底层操作系统自动完成 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9d26a9b77af4477b855d5fc192af466b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemFrYXJpeWFhMzM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ab86a1ffbaa44d3acb509bf402d5e4e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemFrYXJpeWFhMzM=,size_20,color_FFFFFF,t_70,g_se,x_16) serverName被设定为了字符串’hostname’,这里的’hostname’是我们提供的服务器IP或服务器的主机名的字符串 serverPort是端口号 ![在这里插入图片描述](https://img-blog.csdnimg.cn/767813d728fe47ba9561704513ad43f8.png) 这一行创建了该客户的套接字,名字是clientSocket,AF_INET指定了底层网络使用IPv4,SOCK_DGRAM表示我们使用的是UDP而不是TCP ![在这里插入图片描述](https://img-blog.csdnimg.cn/37cca615109c40f8a02b314c25de08c8.png) 这一行使用python内置的函数raw_input,用户输入一行数据,名称为message ![在这里插入图片描述](https://img-blog.csdnimg.cn/7c6626fb9223414daa3eb022f2461118.png) 因为报文内容只能为字节形式,使用encode将字符串转为字节,发送出去 ![在这里插入图片描述](https://img-blog.csdnimg.cn/379c0975e4d84fcc80fa1e7c25004a20.png) 以缓存长度接收来自因特网的分组,数据存放在modifiedMessage里,源地址放在severAddress里
![在这里插入图片描述](https://img-blog.csdnimg.cn/55a506c5c64a49ab93d818e9fbe03507.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemFrYXJpeWFhMzM=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/a924235c4d364021bc1603ee7519fc4d.png) 将接口12000与套接字severSocket绑定在一起,以后只要有访问12000的分组进入,该分组直接被导向该套接字
TCP套接字编程
![在这里插入图片描述](https://img-blog.csdnimg.cn/0fc1dc19a9bb4717b0a9b21dc702a739.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemFrYXJpeWFhMzM=,size_20,color_FFFFFF,t_70,g_se,x_16) 与UDP不同的是,TCP在套接字创建完毕后,需要用connect命令建立TCP连接,连接建立完成后,发送信息就不需要传入服务器信息了。 这条代码执行完后,执行三次握手,并创立TCP连接 ![在这里插入图片描述](https://img-blog.csdnimg.cn/34bfbb90fdb74b7584cff8893d20a3d3.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/060740893320404d857850ca27c95e30.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemFrYXJpeWFhMzM=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d9564c74f948450a9137ee631a05a3a8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemFrYXJpeWFhMzM=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/736d12d7b995413b9bea4935e96eb3f9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemFrYXJpeWFhMzM=,size_20,color_FFFFFF,t_70,g_se,x_16)
|