1、1. 当两台计算机分别和中继器、二层交换机、三层交换、路由器相连时,请分别画出计算机与交换设备五层参考模型;应 用 层网 络 层传 输 层网 络 层数 据 链 路 层物 理 层物 理 层数 据 链 路 层传 输 层应 用 层中继器物 理 层计算机 A 计算机 B应 用 层网 络 层传 输 层网 络 层数 据 链 路 层物 理 层物 理 层数 据 链 路 层传 输 层应 用 层二层交换机物 理 层计算机 A 计算机 B数 据 链 路 层应 用 层网 络 层传 输 层网 络 层数 据 链 路 层物 理 层物 理 层数 据 链 路 层传 输 层应 用 层三层交换机物 理 层计算机 A 计算机 B数
2、据 链 路 层网 络 层应 用 层网 络 层传 输 层网 络 层数 据 链 路 层物 理 层物 理 层数 据 链 路 层传 输 层应 用 层路由器物 理 层计算机 A 计算机 B数 据 链 路 层网 络 层2. 学习 SOCKET 编程,写出 TCP、UDP 通信流程;将实例程序两个同学一组,实现两台计算机之间通信。并写出学习报告;(a)TCP 通信流程准备阶段:服务器程序首先进行初始化操作:(1) 调用 socket 创建一个套接字(2) 函数 bind 将这个套接字与服务器公认地址绑定在一起(3) 函数 listen 将这个套接字转换成倾听套接字(listening socket)(4)
3、调用函数 accept 来接受客户机的请求。客户机程序初始化操作:(1) 客户机调用函数 socket 创建一个套接字(2) 调用函数 connect 来与服务器建立连接。连接建立之后,客户机与服务器通过读(read() 、写(write()套接字来进行通信。如下图:S o c k e tb i n dL i s t e nw r i t es e n dS o c k e tw r i t ec o n n e c ts e n d服务器端客户端T C P 通信流程c l o s e c l o s e(b)UDP 通信流程准备阶段:服务器程序首先进行初始化操作:(1)调用 socket 创
4、建一个套接字(2)函数 bind 将这个套接字与服务器公认地址绑定在一起客户机程序初始化操作:(1)客户机调用函数 socket 创建一个套接字客户机与服务器通过读(sendto() 、写(recvfrom() 套接字来进行通信。如下图:S o c k e tb i n dr e c v f r o ms e n d t oc l o s eS o c k e tc l o s es e n d t or e c v f r o m服务器端客户端U D P 通信流程(c)实验报告实现两台计算机之间通信(1)首先在 cmd 下输入 ipconfig 获取本机 IP 信息,如下所示:(2)然后记录
5、相应的 IP 地址,再将客户端代码中的*Serip=”127.0.0.1”中的”127.0.0.1” 替换为该 IP 地址(3)先运行服务器端,再运行客户端,运行截图如下所示(d)代码中遇到的问题在测试代码的时候遇到了很多错误:(1) #include改为#include(2) main 函数返回值改为 int,return 后添加返回值(3) break 后添加分号(4) 因为我用的是 codeblocks,然后在设置-编译器-连接器设置-添加,添加 libws2_32.a,我的 libws2_32.a 在 cMinGWliblibws2_32.a 下(d)个人感悟通过这次对 socket 编程的学习,我对 socked 编程有了一个大致的了解,实现了初步的 TCP和 UDP 形式的客户端与服务器端的通信。这次实验我对网络编程产生了浓厚的兴趣,同时提高了以后学习计算机网络这门课的自信心。