首先是
网络分类
局域网(LocalArea Network)(LAN):小范围
城域网(Metropolitan Area Network)(MAN):一个城市,或一个省份
广域网(Wide Area Network)(WAN):一个国家,它的范围很广
因特网(Internet)由无数个LAN和WAN组成
网络编程模型
主要有两种通信方式,一是客户端/服务器(C/S)(Client/Server)模式,另一种是浏览器/服务器(B/S)(Browser/Server)模式
问题一:网络编程是什么?
两个进程之间的通讯;客户端和服务端之间的通讯;
问题二:你对传统的BIO的理解是什么?
笔者的理解:一对应 一请求 一应答模式程
使用 C/S 模式的程序:开发模式的优势在于由于客户端是专门开发的,表现力会更强。缺点就是通用性差
使用 B/S 模式的程序:只需开发服务器端即可,开发的压力较小,不需要维护客户端。但是对浏览器的限制比较大,表现力不强。
网络协议:
网络之间互联的协议,中文简称为网协,计算机网络相互连接进行通信而设计的协议。相互通信的一套规则,只有遵守 IP 协议才可以与 Internet 互联。
Internet 依靠 TCP/IP 协议在全球范围内实现不同硬件结构、不同操作系统、不同网络的互联。
协议采用 4 层的层级结构,分别是应用层、传输层、网络层和网络接口层。
TCP 与 UDP 协议
TCP/IP 协议的传输层同时存在 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)两个协议。
在网络通信中 TCP 协议类似于使用手机打电话,可以保证把信息传递给别人;而 UDP 协议类似于发短信,接收人有可能接收不到传递的信息。
在网络通信中使用 TCP 的方式需要建立专门的虚拟连接,然后进行可靠的数据连接,如果数据发送失败,客户端会自动重发该数据。而使用 UDP 方式不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。
TCP 协议是一种以固定连线为基础的协议,它提供两台计算机之间可靠的数据传送。而 UDP 无连接通信协议,它不保证可靠数据的传输,但能够向若干目标发送数据以及接收来自若干源的数据
TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
UDP介绍:
每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。
UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方
TCP介绍:
面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。
TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。
TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。

应用:
TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高。
UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。
套接字
-实现网络通信必须将两台计算机连接起来建立一个双向的通信链路,这个双向通信链路的每一端称之为一个套接字(Socket)。
-如果服务器接收到客户端的请求,就会创建一个套接字,客户端使用该套接字与服务器通信,但此时客户端的套接字并没有绑定到与服务器连接的端口号上。
Socket通信的基本流程具体步骤如下所示:
- 开启一个连接之前,需要先完成Socket和Bind两个步骤。Socket是指创建一个新的套接字对象,Bind是指定套接字的IP和端口(客户端在调用Connect时会由系统分配端口,因此可以省去Bind)。
- 服务端通过Listen开启监听,等待客户端接入。
- 客户端通过Connect连接服务器,服务端通过Accept接收客户端连接。在connect-accept过程中,操作系统将会进行三次握手。
- 客户端和服务端通过Recv和Send发送和接收数据,操作系统将会完成数据的确认,重发等步骤。
-
通过Close关闭连接,操作系统会进行四次挥手操作。image.pngimage.png
2.2 Socket通信编程
在进行网络编程时,Socket通信编程主要包含两种方式:同步实现和异步实现。所谓同步通信就是客户端在发送请求之后必须等到服务器回应之后才可以发送下一条请求。串行运行。而异步通信是指客户端请求之后,不必等到服务器回应之后就可以发送下一条请求。并行运行。
IP
在计算机网络中,现在命名 IP 地址的规定是 IPv4 协议,该协议规定每个 IP 地址由 4 个 0~255 的数字组成
IP和端口能唯一定位到需要通信的进程。这里的IP表示地址,区别于IP协议。在OSI体系还是TCP/IP体系中,IP协议位于网际层,来封装IP地址到报文中。
端口号主要分为以下两类:
1.由 Internet 名字和号码指派公司 ICANN 分配绐一些常用的应用层程序固定使用的熟知端口,其值是 0~1023。例如 HTTP 服务一般使用 80 端口,FTP 服务使用 21 端口。
2.一般端口用来随时分配绐请求通信的客户进程。
网络编程的核心是IP、端口、协议三大元素
网络编程的本质是进程间通信
网络编程的2个主要问题:1是定位主机,2是数据传输

