网络编程学习笔记(一)

计算机网络是什么?

利用通信线路,将地理上的分散的、具有独立功能的计算机系统和通信设备,按不同的形式连接起来,以功能完善的网络软件及协议实现资源贡献和信息传递的系统。

主要网络有哪些?(这里指从范围上划分,另外还有很多种划分的方式)

  • 局域网 LAN
  • 城域网 100km以内
  • 广域网 更大的范围

计算机网络体系结构


3G、4G、5G对应哪一层? ——链路层

TCP/IP协议族

以下协议都属于TCP/IP协议族,协议很多,分布在不同的网络分层中

分层协议
应用层TFTP、HTTP、FTP、DNS、Telnet…
传输层TCP、UDP
网络层IP、ICMP、RIP、OSPF…
链路层SLIP、CSLIP、PPP、ISO2110、2EEE802…

网络传输中的数据

  • 发送端把数据一层层包装,接收到收到以后再一层层解包
  • 几个常用的术语:
    :全能术语,如数据包
    :链路层中,包的单位
    :IP中数据单位
    :TCP数据流中的信息
    消息:应用协议中数据单位
  • TCP与UDP
    TCP是面向连接的,可靠的协议流
    UDP是面向无连接的通讯协议
    UDT基于UDP,在HTTP3中广泛使用,应用层自己实现重传
    DNS、QQ、视频直播等允许丢包的应用,用UDP
  • 为什么要发明UDT?
    在TCP中,算法比较保守,带宽变小以后,会立刻减速,但带宽变大恢复后,传输速度恢复的慢,在目前的网络快速发展的时代,显得太保守了
  • 我要基于UDP实现可靠的协议,要怎么做?
    可以在应用层自己实现。

Mac地址

  • MAC地址也叫物理地址、局域网地址、以太网地址,是由网络设备制造商,烧写在设备内部的,与网络无关。
  • 一个设备、一个网卡、一个路由器、一个手机就有一个MAC
  • 00-00-00-00-00-00 前6位,要去IEEE申请,后六位由厂商决定
  • 理论上,MAC地址就是唯一的
  • MAC地址,属于网络分层中的链路层

IP地址

  • IP地址是为互联网上的网络或主机配置一个唯一的逻辑地址
  • IP地址是可更改的,IP属于网络分层中的网络层
  • 寻址:每个设备接入路由器,都要广播自己的IP,路由器会保存每台设备的IP、MAC

端口号

  • 端口号是用来识别同一台计算机中进行通信的不同应用程序。也被称为程序地址。属于网络分层中的传输层
  • 例如手机上安装了QQ、微信、美团,路由器把数据包发送给了当前机器,操作系统要通过端口号来识别,数据包属于哪个应用。
  • 一般在定义协议时就指定了端口号,如HTTP一般是80,FTP一般是21,这些属于知名端口号。
  • 知名端口号一般在1~1023
    不知名端口号在1024~49151,可用,但一般不用
    49152~65535之间,不指定端口号时,操作系统会在这个范围内选择,因为这些端口号没人用
  • 服务端一般需要指定端口号:既然要提供服务,就应该告诉客户端自己的端口号时多少
  • 客户端一般不需要指定端口号:操作系统会分配(49152~65535)

TCP协议

特点

  • 端对端,面向连接
  • 可靠性
  • RTT往返时延
  • 数据排序
  • 流量控制
  • 全双工

三次握手

  • SYN:标志位
    ACK:通讯报文中的一个标志位
    ack:具体的一个数,对seq的一个应答 ack=seq+1
  • 为什么需要三次握手?
    TCP是面向连接的,可靠的,客户端和服务端都需要知道对方有没有收到自己的序列号起始值,即seq的值,因为在一次连接中,seq的值是连续的,双方都确认了seq的起始值,才可以建立连接,连续的seq的好处是,如果网络出现异常,可以知道丢的是哪个包。
    所以说三次握手是能让双方都确认的最小次数。
  • TCP三次握手的漏洞——SYN洪泛攻击
    在第一次握手的时候,用假的IP大量发送,应答就永远到不了真实客户端,服务器一直在SYN_RCVD状态
    解决方法:1、无效连接监控释放;2、延缓TCP分配方式;3、防火墙(生产中主要是这种方式,有效的IP才能到达服务器)。

推荐书籍

  • 基础《Java网络编程》第4版
  • 深入《UNIX网络编程》第3版
  • webSocket圣经《HTML5 WebSocket权威指南》
  • TCP/IP圣经《TCP/IP详解》3卷
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值