手机 网站 源码扬州市开发区建设局网站首页

网络:
 1.协议:通信双方约定的一套标准 
 2.国际网络通信协议标准:
     1.OSI协议:
         应用层          发送的数据内容
         表示层          数据是否加密
         会话层          是否建立会话连接
         传输层          数据传输的方式
         网络层          数据的路由
         数据链路层      局域网内部通信
         物理层          物理介质的连接
    2.TCP/IP协议模型:
         应用层          发送的数据内容
         传输层          数据传输的方式
         网络层          数据由一台主机到达另一台主机
         网络接口层      物理介质连接 
        应用层:
             FTP     文件传输协议    
             TFTP    简单文件传输协议
             HTTP    超文本传输协议
             HTTPS   安全超文本传输协议
             SMTP    简单邮件传输协议
             TELNET  网络终端登录协议
             DNS     域名系统
             .. 
         
         传输层:
             TCP     传输控制协议
             UDP     用户数据报协议
            UDP:不安全、不可靠的传输方式
                  UDP机制简单
                  UDP占用的资源开销比较小
             TCP:安全、可靠的传输方式
                  TCP机制复杂
                  TCP占用的资源开销比较大 
                     三次握手建立连接(客户端与服务器端),确认双方能够通信
                     通信过程中保障数据传输的完整性
                     四次挥手断开连接,确保数据传输的完整
            

                  
         网络层: 
             IPV4协议
             IP地址
            管理员IP地址形式:192.168.0.167
             内存IP地址形式:  11000000.10101000.00000000.10100111
            IP地址 = 网络位 + 主机位 
             网络位:IP地址所属的网段(局域网的编号)
             主机位:局域网中的第几台主机
             网段号:网络位不变,主机位全为0 
             广播号:网络位不变, 主机位全为1 
             子网掩码:每个IP地址都会搭配一个子网掩码,用来区分IP地址的网络位及主机位子网掩码展开成二进制,1对应的部分就是IP地址的网络位,0对应的部分就是IP地址的主机位
             192.168.0.167
             255.255.255.0
             11000000.10101000.00000000.10100111
             11111111.11111111.11111111.00000000
            192.168.0.0
             192.168.0.255
             
         IP地址的划分:
             公有地址
             私有地址
             A类:1.0.0.0 ~ 126.255.255.255
                 子网掩码:255.0.0.0 
                 管理超大规模型网络                                                                                                            私有IP 10.0.0.0——10.255.255.255
                 
             B类:128.0.0.0 ~ 191.255.255.255
                 子网掩码:255.255.0.0 
                 管理大中规模型网络
                 私有地址:172.16.0.0 - 172.31.255.255
            C类:192.0.0.0 ~ 223.255.255.255
                 子网掩码:255.255.255.0
                 管理中小规模型网络
                 私有地址:192.168.0.0 ~ 192.168.255.255
            D类:224.0.0.0 ~ 239.255.255.255
                 用于组播:255.255.255.0
            E类:240.0.0.0 ~ 255.255.255.255
                 用于实验和研究:255.255.255.0
        MAC地址:设备自带网卡的地址(该地址是唯一的)
         端口号:找到同一台主机不同的应用程序
网络接口层通信方式:
网络接口层的主要功能包括:
1.将网络层的数据包封装成帧,准备发送到物理层。
 2.通过物理媒介发送和接收数据帧。
 3.实现数据链路层协议,如以太网协议等。
 4.处理对传输介质的访问控制。
 5.以及实现网络接口的配置和管理,如使用ifconfig命令查看和配置IP地址

3.命令:
     1.ifconfig 
     2.将虚拟机IP地址设置为桥接模式:
         1.点击"虚拟机"
         2.点击"设置"
         3.选择"网络适配器"
         4.点击"桥接模式"
         5.点击"确定"
     3.将虚拟机桥接到无线网卡上去
         1.点击"编辑"
         2.点击"虚拟网络编辑器"
         3.点击"更改设置"
         4.已桥接至选择无线网卡
         5.点击"确定"
     4.修改网卡配置文件
         1.sudo vim /etc/network/interfaces
         2.修改文件内容为:
            auto lo
            iface lo inet loopback
           auto ens33
            iface ens33 inet dhcp
            
     3.保存退出
           :wq
     4.重启网络服务
         sudo /etc/init.d/networking restart
     5.测试与局域网内其余IP地址是否能够连通
         ping 192.168.0.167
         ping www.baidu.com 
4.UDP编程:
     1.套接字:
         实现Linux系统下的网络通信
         套接字:一次通信对象的抽象
    2.socket 
       int socket(int domain, int type, int protocol);
       功能:
         创建套接字
       参数:
         domain: AF_INET 表示IPV4协议
         type:套接字类型
             SOCK_STREAM:流式套接字
             SOCK_DGRAM:数据报套接字
             SOCK_RAW:原始套接字
         protocol:
             TCP和UDP协议:0
       返回值:  
         成功返回用来通信的文件描述符
         失败返回-1 
    3.sendto 
       ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                       const struct sockaddr *dest_addr, socklen_t addrlen);
       功能:
         发送信息
       参数:
         sockfd:套接字文件描述符
         buf:发送数据空间首地址
         len:发送数据长度
         flags:发送属性 默认为0 
         dest_addr:目标地址存放空间首地址
         addrlen:目的地址的长度
       返回值:
         成功返回发送字节数
         失败返回-1 
        struct sockaddr_in {
             sa_family_t    sin_family; /* address family: AF_INET */
             in_port_t      sin_port;   /* port in network byte order */
             struct in_addr sin_addr;   /* internet address */
         };
        /* Internet address. */
         struct in_addr {
             uint32_t       s_addr;     /* address in network byte order */
         };
如果sendto对应的套接字没有绑定端口,则sendto绑定一个随机端口完成发送功能
    4.inet_addr
       in_addr_t inet_addr(const char *cp);
       功能:
         将字符串的IP地址转换为32位的地址类型 
    5.htons 
       uint16_t htons(uint16_t hostshort);
       功能:    
         将本地字节序(小端)转换成网络大端字节序
    6.bind 
       int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
       功能:
         将套接字与IP地址和端口进行绑定
       参数:
         addr:绑定地址结构体空间首地址
         addrlen:绑定地址空间大小
       返回值:
         成功返回0 
         失败返回-1 
       注意:
         只能绑定自己的IP地址
    发送端流程:1.创建套接字
                2.发送信息
                3.关闭套接字
    接收端流程: 1.创建套接字       
                 2.绑定IP和Port
                 3.接收信息 
                 4.关闭套接字
    7.recvfrom 
       ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                         struct sockaddr *src_addr, socklen_t *addrlen);
       功能:
         接收信息
       参数:
         sockfd:套接字文件描述符
         buf:接收数据空间首地址
         len:接收数据长度
         flags:接收的属性 默认为0 
         src_addr:存放发送方地址空间的地址
         addrlen: 要接收的发送方地址的长度
       返回值:
         成功返回实际接收字节数
         失败返回-1
 NAT: NAT是一种网络技术,用于将私有IP地址转换为公共IP地址,以便在互联网上进行通信。在NAT网络中,内部网络中的设备使用私有IP地址,这些地址通常是从RFC 1918中定义的地址块中分配的,以避免与公共IP地址冲突。NAT转换器(NAT router)是一种网络设备,它包含NAT功能,可以接收来自内部网络的数据包,并将其源IP地址和端口号转换为公共IP地址和端口号。这样,内部网络中的设备就可以通过NAT转换器与互联网上的其他设备进行通信。当外部网络中的设备尝试与内部网络中的设备通信时,NAT转换器会记录下原始的源IP地址和端口号,以便在返回的数据包中进行相应的转换。这种机制可以保护内部网络免受来自互联网的直接访问,提高网络安全性 
作业:
 1.自己实现发送端,从终端接收一个字符串发送给接收端
   自己实现接收端,从网络中接收到一个字符串并打印
2.编写两个程序,一个发送端,一个接收端,实现一个文件跨主机的传输
