学习笔记11

第十三章 TCP/IP和网络编程
    13.1 网络编程简介
        在本章中将介绍TCP/IP网络和网络编程的基础知识:
            TCP/IP协议
            UDP和TCP协议
            服务器-客户机计算
            HTTP和Web页面
            动态页面的PHP和CGI编程
    13.2 TCP/IP协议
        TCP/IP是互联网的基础,TCP代表传输控制协议,IP代表互联网协议,目前有两个版本的IP:
            IPv4协议 32位地址
            IPv6协议 128位地址
        TCP/IP的组织结构分为几个层级,通常称为TCP/IP堆栈
  
  顶层是使用TCP/IP的应用程序,用于登录到远程主机的ssh,用于交换电子邮件的mail、用于Web页面的http等应用程序需要可靠的数据传输。通常,这类应用程序在传输层使用TCP。
      
  另一方面,有些应用程序,例如用于查询其他主机的ping命令,则不需要可靠性。这类应用程序可以在传输层使用UDP来提高效率。
    13.3 IP主机和IP地址
  主机是支持TCP/IP协议的计算机或设备,每个主机由一个32位的IP地址来标识
       IP地址分为两部分,NetworkID字段和HostID字段,IP地址分为A~E类
    13.4 IP协议
  IP协议用于在IP主机之间发送/接收数据包
       IP主机只向接收主机发送数据包
    13.5 IP数据包格式
  IP数据包由以下内容组成,且每个IP数据包的大小最大为64K
  •             IP头
  •             发送方IP地址
  •             接收方IP地址
  •             数据
  
        IP头包含更多数据信息
  •             数据包的总长度
  •             数据包使用TCP还是UDP
  •             生存时间(TTL)计数
  •             错误检测的校验和

    13.6 路由器

        IP主机之间可能相距很远,通常不可能从一个主机直接向另一个主机发送数据包
        路由器是接收和转发数据包的特殊IP主机,一个IP数据包可能会经过很多路由器,或跳跃到某个目的地
        每个IP包在IP报头中都有一个8位生存时间(TTL)计数,最大值为255,每经过一个路由器减1,减到0则丢弃
    13.7 UDP
  UDP(用户数据报协议)在IP上运行,用于发送/接收数据报
       与IP类似,UDP不能保证可靠性,但是快速高效,可用于可靠性不重要的情况
    13.8 TCP
  TCP(传输控制协议)是一种面向连接的协议,用于发送/接收数据流
       TCP也可在IP上运行,但它保证了可靠的数据传输
    13.9 端口编号
  在各主机上,多个应用程序(进程)可同时使用TCP/UDP
       每个应用程序由三个组成部分唯一标识:应用程序 = (主机IP,协议,端口号)
    13.10 网络和主机字节序
  计算机可以使用大端字节序,也可以使用小端字节序
       互联网上,数据始终按网络序排列,这是大端
    13.11 TCP/IP网络中的数据流
    
  应用层->传输层->IP网络层->网络链路层
    13.12 网络编程
  13.12.1 网络编程平台
       13.12.2 服务器-客户机计算模型
    13.13 套接字编程
  13.13.1 套接字地址
    
    在套接字地址结构中:
      ● TCP/IP 网络的 sin_family 始终设置为 AF_INET
      ● sin_port包含按网络字节顺序排列的端口号
      ●sin addr是按网络字节顺序排列的主机IP地址
       13.13.2 套接字API
            1.int套接字(int域,int类型,int协议)
            2.int bind(int scokfd,struct sockaddr *addr,socklen_t addrlen)
      bind()系统调用将addr指定的地址分配给文件描述符sockf所引用的套接字
            3.UDP套接字
      UDP套接字使用sendto()/recvfrom()来发送/接收数据报
    
            4.TCP套接字
      TCP服务器使用listen()和accept()来接收来自客户机的连接
            5.send()/read()以及recv/write()
      建立连接后,两个TCP主机都可以使用send()/write()发送数据,并使用recv()/read()接收数据,他们唯一的区别是send()和recv()中的flag参数不同,通常情况下可以将其设置位0.
    13.14 UDP回显服务器-客户机程序
    13.15 TCP回显服务器-客户机程序
    13.16 主机名和IP地址
二.实践和截图
posted @ 2021-11-27 23:51  冯睿20191328  阅读(32)  评论(0编辑  收藏  举报