学习笔记11

第13章 TCP/IP和网络编程

本章论述了 TCP/P和网络编程,分两个部分。第一部分论述了TCPAIP协议及其应用,具体包括 TCP/IP栈、IP地址、主机名、DNS、IP 数据包和路由器;介绍了 TCP/IP网络中的UDP 和 TCP 协议、端口号和数据流;阐述了服务器-客户机计算模型和套接字编程接口;通过使用UDP和 TCP 套接字的示例演示了网络编程。第一个编程项目可实现一对通过互联网执行文件操作的 TCP服务器-客户机,可让用户定义其他通信协议来可靠地传输文件内容。
本章的第二部分介绍了 Web 和CGI编程,解释了 HTTP编程模型、Web 页面和Web 浏览器;展示了如何配置 Linux HTTPD 服务器来支持用户 Web 页面、PHP 和 CGI 编程;阐释了客户机和服务器端动态 Web 页面;演示了如何使用PHP和CGI创建服务器端动态 Web页面。第二个编程项目可让读者在Linux HTTPD 服务器上通过 CGI 编程实现服务器端动态Web 页面。

TCP是传输控制协议。IP是互联网协议。TCP/IP是互联网的基础。

软件体系结构

  C/S:客户端/服务器

    胖客户端,瘦服务器

  B/S:浏览器/服务器

    瘦客户端,胖服务器

    优点:客户机软件只需浏览器,只需实现简单的逻辑

  P2P:Peer to Peer

    网络中的参与者既是资源(服务或内容)提供者(Server),也是资源获取者(Client)

IP地址:

  标识主机,IPv4-32位,IPv6-128位

端口:

  标识某主机上的某个应用进程

字节顺序:

  小端:低位字节在内存的低地址端

  大端:高位字节在内存的低地址端

TCP套接字通信过程(面向连接)

  服务期先启动:

    调用socket函数创建一个套接字s

    调用bind函数绑定ip和端口

    listen

    accept

    ……

time/echo/http服务器

套接字编程

  套接字地址

struct sockaddr_in{
    sa_family_t sin_family;    //AF_INET for TCP/IP
    in_port_t sin_port;        //port number
    struct in_addr sin_addr;    //IP address
};
struct in_addr{                //internet address
    uint32_t s_addr;            //IP address in network byte order
};

  套接字API

int 套接字(int域,int类型,int协议);

int bind(int sockfd,struct sockaddr *addr,socklen_t addrlen);

UDP套接字

TCP套接字

send()/read()以及recv/write()

苏格拉底挑战

posted @ 2023-11-23 20:55  周意凯  阅读(11)  评论(0编辑  收藏  举报