首页 > 其他分享 >学习笔记11

学习笔记11

时间:2023-11-23 21:14:47浏览次数:33  
标签:11 Web IP 编程 TCP 学习 笔记 服务器 接字

第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()

苏格拉底挑战

标签:11,Web,IP,编程,TCP,学习,笔记,服务器,接字
From: https://www.cnblogs.com/dkyzhouyikai/p/17847521.html

相关文章

  • 11.23每日总结
    /AbstractChatroom.javapackageorg.example.test017;importjavax.swing.plaf.basic.BasicTreeUI;publicabstractclassAbstractChatroom{publicabstractvoidregister(Membermember);publicabstractvoidsendText(Stringfrom,Stringto,Stringme......
  • 2023-2024-1 20232421邓锴 《网络空间安全导论》 第2周学习总结
    教材学习总结了解密码的来源与发展ENIGMA机的构造以及机理信息论的基本观点了解现代密码学发展以及面临的挑战密码学理论基础(数学知识)密码学的新进展以及未来方向思维导图教材学习中的问题和解决问题问题1:ENIGMA机的构造以及机理了解不清问题1解决办法:查询图片→查找......
  • 虚拟机linux系统配置安装redis(每日总结11.23)
    1.进入到root模式下cd/export/server/2.下载wgethttp://download.redis.io/releases/redis-5.0.7.tar.gz3.解压tar-zvxfredis-5.0.7.tar.gz4.把文件移动到redis文件夹里mvredis-5.0.7/export/server/redis5.进入redis文件夹里cdredis6.编译m......
  • 学习指南[自用]
    学习指南收集到的岗位要求,定下以后的学习目标,指导自己的学习路线计算机基础精通linux常用命令、网络协议深入理解Linux操作系统原理者优先;有相关开源社区贡献者优先Java精通Java语言,包括JVM、多线程、高并发、网络等、NIO模型、类装载熟悉java工具以及实现原理(JVMT......
  • 20231123
    好久都没写过OI相关的东西了,累了。真的累了。刚刚lf给我说他明天会给我整一个容斥的单元小测。有点紧张,因为自己数学一直都很烂。还有容斥这么抽象的玩意,到时候估计会脑抽。累了。不能放弃啊。继续吧。今天和@Super_Cube吃饭的时候聊到了「关于力老师为什么只同意......
  • Python中,if __name__=="__main__"学习
    注意:Python的代码执行,都是依次从上往下执行在Python中,每个模块都有一个内置的变量name,用于表示当前模块的名称。当一个Python文件被执行时,Python解释器会首先将该文件作为一个模块导入,并执行其中的代码。此时,__name__的值为模块的名称。ifname==‘main’是一个常见的用法,它......
  • 20232303 关于OpenSSL的学习
    关于OpenSSL的学习sm2加密解密请忽略原来遗留下的文件,它们与本任务无关,只看新生成的文件就好。问题与解答-opensslecparam-nameSM2-genkey-outsm2-key.pem这是一个使用OpenSSL工具生成SM2密钥的命令。opensslecparam是OpenSSL的椭圆曲线操作命令。-name......
  • 「线段树」笔记
    基础建树voidbuild(intp,intl,intr){ t[p]=(tree){l,r,0}; if(l==r) { t[p].sum=val[l]; return; } intmid=(l+r)>>1; build(lp,l,mid); build(rp,mid+1,r); pushup(p);}单点修改(和)voidupdate(intp,intx,intk){ if(t[......
  • 工业一体全国产方案,米尔T113核心板
    入门级HMI屏作为嵌入式系统中重要组成部分,大部分都是串口屏;其功能简单、成本低等特点,使用历史悠久、应用广泛,而随着信息技术的快速发展,行业需求不断升级,工程师使用了大量串口屏后,发现串口屏功能上限很低、制约太多、非常不灵活等问题。困扰工程师新的问题出现,有没有成本接近、功能......
  • 11月21号课堂笔记
    1.插入排序#include"stdio.h"#defineN5intmain(){ //12345 //21345 inta[N]={1,2,3,4,5},i,j,tmp; for(i=1;i<N;i++) { j=i-1; tmp=a[i]; while(a[j]<tmp&&j>=0){ a[j+1]=a[j]; j--; } a[j+1]=tmp; } for(i=0;......