1.网络:能够将双方或者多方连接在一起的工具,将单机世界变成网络世界。
2.网络编程:不同的电脑上的软件能够进行数据的传递,进行进程之间的通信。
3.ip地址:在网络中标记某一台电脑。
3.1 每一个地址包括两个部分:网络地址和主机地址
3.2 分为ipv4和ipv6:ipv4:点分十进制;ipv6:十六进制数据
3.3 分为[ABCDE]类和私有地址等
3.4 私有地址(局域网中使用)
3.5 本机域名:localhost 本机地址:172.0.0.1
3.6 例如:百度www.baidu.com,其原本是一个地址,而baidu是一个域名,域名和ip地址一一对应,域名便于记忆设备的地址
3.7 如何查看本机网卡信息从而获得地址
3.7.1 Linux系统中:终端输入ifconfig
3.7.2 windows系统中:cmd之后输入ipconfig
3.8 ping:检查网络是否有问题
3.8.1 ping 127.0.0.1 能够ping动说明本机物理网卡没有问题
3.8.2 ping www.baidu.com 能够ping动说明电脑能上网
3.8.3 ping 192.168.70.104 能够ping动说明在同一个局域网内
4.端口:数据传输的通道
4.1 端口在Linux系统中有2的16次方之多,所以系统为了统一管理,进行了编号
4.2 从而出现了端口号,端口号是使用唯一的编号来标识一个端口,范围0-65535
4.3 由于有了ip地址和端口,我们可以看出网络通信的过程:
首先通过ip地址找到对应的设备,然后通过端口号找到端口,然后通过端口给应用程序发送数据。
4.4 端口的分类(简单版,仅仅介绍知名端口和动态端口)
4.4.1 知名端口:系统使用的端口,范围0~1023 例:80分配给HTTP服务;21分配给FTP服务
4.4.2 动态端口:范围1024~65535,顾名思义,动态的端口,占用释放,给不同的程序使用
4.4.3 如何查看端口的使用状态:netstat -an
4.4.4 端口号找对应的应用程序,一般加上sudo:lsof -i[tcp/udp]:8888
4.4.5 根据进程编号杀死进程:kill -9 进程编号
5.socket:套接字:是不同主机进程间通信的一种方式,他是数据的搬运工
6.udp(用户数据报协议)发送数据、接收数据
补充:udp默认不允许发送广播,所以想发送广播需要开启广播选项,这边不做扩展,可百度。
7.tcp(传输控制协议)客户端
8.tcp服务端
9.tcp特点:
9.1 面向连接
9.2 传输可靠:
9.2.1 应答机制
9.2.2 超时重传
9.2.3 错误校验
9.2.4 流量控制
10.tcp三次握手,四次挥手:
10.1 三次握手:
客户端发送连接请求和报文序号,服务器接收到请求,
服务器返回连接请求,并确认请求,在报文序号基础上+1,以及确认报文序号
客户端返回确认请求,并且确认报文序号
三次握手成功,建立连接
10.2 四次挥手:
客户端发送关闭连接的请求,服务器接收到请求,
服务器返回确认关闭连接的请求(确认序号)
服务器等待自身的代码执行完毕,执行完毕之后再发一个关闭连接的最终确认
客户端接收到之后在序号上+1再返回给服务器
四次挥手成功,连接关闭
注意点:四次挥手之后客户端会等待服务器是否回复消息,1-2分钟之后才会怔怔地断开连接,此时的端口号是占用的,为了端口号不被占用,我们需要端口重用,上面的截图已经标注~
11.tcp长连接和短连接:
11.1 长连接:保持连接。
例:数据库的连接就是长连接。
11.2 短连接:通信一次就关闭重新连接。
例:大多数web用的是短连接,这样减轻了服务器的压力。
12.udp和tcp区别:
12.1 tcp面向连接;udp不面向连接
12.2 tcp可靠的传输协议;udp不可靠(包括四点)
12.3 udp传输速度比tcp快;但占用资源比tcp少。
12.4 tcp适合文件的上传和下载,对大多数应用都是使用tcp的;udp适合音视频的传输,广播
12.5 tcp理论上发送的数据包理论上没有限制,udp发送数据包不能太大,上限为64K