【网络编程】学习总结

文章介绍了计算机网络的基本概念,包括网络、互联网和因特网的定义,以及网络的三种交换方式。重点讲述了网络体系结构中的OSI模型和TCP/IP模型,强调了物理层、数据链路层、网络层和传输层的功能。此外,还详细讨论了IP地址的分类、子网划分以及TCP和UDP协议的特点。
摘要由CSDN通过智能技术生成

1.网络基本概念

        网络:就是由若⼲个结点(电脑主机)和连接这些结点的链路组成,是一种一个路由多个主机的网状结构主机1--(链路)--路由--(链路)--主机2

        互联网(internet):多个网络还可以通过路由与路由相互连接起来,即形成⼀个更⼤的⽹络

        因特网(Internet):是世界上最⼤的互联网(⽤户数以亿计) 

        三种交换⽅式: 1. 电路交换 2. 报文交换 3. 分组交换

2.计算机网络体系结构

        由于要通信的计算机存在差异性,会影响通信,需要在设计时屏蔽掉这些差异性。

        进⾏网络通信的计算机,通信双为了能够通信做出 ⼀种"约定"---协议

        网络协议将网络的功能分成不同的模块,以分层的形式组合在⼀起,每⼀层实现不同的作用

        网络体系结构:网络的层次结构每层使用的协议的集合

        1.OSI体系结构

        应用层:为具体的应用提供⼀些协议,自定义

        表示层:数据格式定义、数据转换/加密

        会话层:建⽴通信进程的逻辑名字与物理名字的关联

        传输层:差错控制/恢复、流量控制、提供可靠的传输

        ⽹络层:数据分组、路由选择

        数据链路层:数据组成可发送、可接收的帧

        物理层:传输物理信号(0、1)、接口、信号形式、速率

        2.TCP/IP体系结构

        应用层:为具体的应⽤提供⼀些协议,自定义

        传输层:差错控制/恢复、流量控制、提供可靠的传输

        ⽹络层:数据分组、路由选择

        数据链路层:数据组成可发送、可接收的帧,解决分组在⼀个网络(在⼀个链路)传输的问题|

        物理层:传输信号,解决使用何种信号来传输比特流

        3.物理层

        物理层就是传输媒体介质,考虑怎样才能在连接的计算机的传输媒体上进行比特流的传输

        物理层为数据链路层屏蔽了各种传输媒介的差异性,使数据链路层只需要考虑如何完成本层的协议和服务,不⽤考虑传输介质问题

        传输介质:

        1、引导型传输媒体:同轴电缆、双绞线、光纤、电力线

        2、非引导型传输媒体:无线电波、微波、红外线、可见光

        编码与调制: 奈氏准则

        串⾏和并行:

        串行:使用⼀根线进行数据传输

        并行:使用多根线⼀起进⾏传输数据

        物理层协议:发送时,把0、1按照对应物理规定的⽅式物理信号发送,接收时,根据规定在接收物理信号时转换成0、1。

        4.数据链路层

        链路:从⼀个结点到相邻结点的⼀段物理线路,中间没有经过其他的交换结点

        数据链路:是指把实现通信协议的硬件和软件加到链路上

        帧:数据链路层以帧为单位传输和处理数据

        数据链路层完成的功能:

        1、封装成帧

        2、差错检测

        3、可靠传输

        当多个主机在同⼀个信道上,主机之间通信,则每个主机在数据链 路层必须有⼀个唯⼀标识,即⼀个数据链路层地址mac地址

        mac地址就是以太网的数据链路层所使用的地址,mac地址是在数据链路层mac帧才存在,ppp帧的数据链路层不需要地址

        mac地址:6字节,mac地址会固化在计算机的⽹卡中,也叫硬件地址

        mac地址的分配:

        5.网络层 

        对于mac地址不具备区分不同⽹络的功能,如果只是在单独的⼀个网络,不接⼊因特网,可以只使⽤mac地址(这不是⼀般用户的方式)

        对于网络层的主要任务就是实现网络互联,从而实现数据包在各网络之间传输。

        主要解决:

        1、网络层寻址问题

        2、路由选择问题

        ip地址:是因特网上的主机和路由器所使⽤的地址

        网络地址:标识因特网上数以百万计的网络

        主机地址:标识在同⼀个网络中的不同主机

        ⼀个主机的ip地址 = 网络号 + 主机号

        网络号:用于区别不同的网络

        主机号:用于区别在同⼀个网络中不同的主机

        通过ip地址,就可以标识出在因特⽹主机的唯⼀编号,就可以跨网络寻找

        ipv4:因特网上的每⼀台主机(或路由器)的每⼀个接口分配⼀个在全世界内的唯⼀32⽐特位的标识符

        ipv6:采⽤128比特位

        ipv4地址的编码⽅式有三个阶段: ipv4地址有32位表⽰不⽅便,因此采用点分⼗进制来表示

        1. 分类编址

 

        A类地址中: 最小的网络号为0,保留不分配,第⼀个可分配的网络号为1,网络地址1.0.0.0 最⼤的网络号为127,作为本地环回地址,不指派,最后⼀个可分配的网络号为126,网络地址为126.0.0.0

        B类地址中: 最小的网络号为128.0,网络地址128.0.0.0 最后⼀个可分配的网络号为191.255,网络地址191.255.0.0

        C类地址中: 最小的⽹络号为192.0.0,网络地址192.0.0.0,最后⼀个可分配的⽹络号为223.255.255,网络地址223.255.255.0

        2. 划分子网 

        在网络中申请的网络地址,相对比较大(主机位数比较多),可以表示的主机比较多,可以在原网络中,分成若干个小的网络把原先的网络中,主机号的位数借用一部分来共同表示网络号

        如:网络地址 198.223.192.0----->可以划分子网,借用3位: 198.223.192.0

        划分成: 198.223.192.0

        198.223.192.32

        198.223.192.64

        198.223.192.96

        198.223.192.128

        198.223.192.160

        198.223.192.192

        198.223.192.224

        子网掩码:也是32比特位,用来表示在ip地址中,对应的网络号的位数,在网络中用连续的1来对应网络的网络号,用连续的0来对应主机号

        3. ⽆分类编址

        在ipv4地址后⾯加上⼀个 / ,在斜线后写上当前网络的网络号是 多少比特位 如: 128.14.35.7 / 20 ⽹络号:20位 ,主机号:12位

        网络层协议:路由选择协议(静态路由、动态路由)、路由信息协议、最短路径优先协议、边界网关协议

        6.传输层

        通过网络层,实现了主机与主机之间的通信,在实际网络中通信的真正实体是位于两个主机中的进程,如何为运行在不同主机的应用进程提供通信是传输层的任务,传输层协议也叫做端对端协议:TCP协议 ,UDP协议

        不同形式的进程进行网络通信使用传输层协议,可以在协议内容中填写要通信的双方进程是谁,在传输层中设计了⼀个端口号来标识⼀个进程,端⼝号:16位,就是⼀个要进行网络通信的进程的标识,端口号只能表示当前主机的要通信进程,端⼝号只有本地主机才有意义

 

        1. udp⽤户数据报协议

        1. ⽆连接,不需要提前把要通信的两个进程关联(连接)起来

        2. ⾯向报⽂的传输,应⽤层的数据直接封装在UDP数据报,既不拆分也不进⾏合并,直接交给⽹络层

        3. 不可靠,尽最⼤努⼒到达,不保证数据安全 在使⽤UDP协议时,每次发送都要携带⽬标信息 

        2. tcp传输控制协议

        1. TCP是⼀种可靠的传输服务(不会出现传输差错、丢失、 重复等各种现象)

        2. 是⾯向连接的服务

        3. ⼀个tcp连接只有两个端点,是⼀对⼀通信

        4. 是可靠传输 拥塞控制、流量控制、超时重传

        5. 面向字节流的传输方式 

        TCP通信必须先建⽴连接,只有建⽴了连接之后TCP才能实现可靠传输,所以在进⾏TCP通信时,通信双⽅的操作会有部分区别,应该是⼀个主动去建⽴连接,另⼀个是等待连接请求,然后就建⽴连接进⾏通信,把主动的⼀端叫做客户端,把被动的⼀端叫做服务端(服务器端)

 

        TCP是⼀种⾯向连接,在进⾏通信前连接是与个必不可少的过程, 在通信完成后,断开连接也是必不可少的

        tcp通信有三个阶段:

        1、建⽴连接

        2、数据传输通信

        3、释放连接

        连接解决了以下问题:

        1、使TCP通信双方都知道对方的存在

        2、能够协商⼀些参数内容(如:最⼤窗⼝值、时间戳选项等)

        3、能够使TCP双⽅对资源数据进行分配

         TCP建立连接步骤共有三步,叫做三次握⼿:

        第⼀次握⼿: TCP客户端打算建⽴连接,向服务器发送连接请求报⽂,客户端请求建⽴连接,客户端进⼊同步发送状态(SYN-SEND) ,在请求报⽂中 把SYN = 1,表⽰这是⼀个请求连接报⽂,把序号字段seq = x(x就是⼀个初始值),作为客户端的初始序号

        第⼆次握⼿: TCP服务器在受到客户端请求后,如果同意连接,则会向客户端发送确认请求报⽂,服务器进⼊同步接收状态(SYN_RECV) 在确认报⽂中把同步位SYN和确认位ACK设置为1,表明这是⼀个请求确认报⽂,把序号seq设置⼀个初始值y,作为服务器的初始序号,把确认号字段ack = x+1,作为对客户端的确认

        第三次握⼿: TCP客户端在收到了服务器的确认信号后,还要向服务器发送⼀个确认报⽂,并进⼊连接已建⽴(ESTABLISHED) ,发送针对服务器确认的确认报⽂,确认位ACK = 1,表⽰这是⼀个确认报⽂,序号seq = x+1,第⼀次是x,第⼆次发送x+1,确认号ack = y+1,这是对服务器的确认,服务器收到,进⼊连接已建⽴(ESTABLISHED) 

        TCP连接释放步骤共有四歩,叫做四次挥⼿

        第⼀次挥⼿: tcp客户端通知主动关闭tcp连接,tcp客户端发送连接释放(断开)报⽂,并进⼊终⽌等待态1状态 ,终⽌位FIN和确认位ACK设置为1,表⽰是⼀个tcp连接释放报⽂, 同时对之前的报⽂做确认,序号seq设置为u,等于之前已经传送过去的数据最后⼀个字节序号 +1,确认号ack设置为v,等于之前已经收到的数据最后⼀个字节序号 +1

        第⼆次挥⼿: tcp服务器收到tcp连接断开请求报⽂,会发送⼀个确认报⽂给客户 端,并进⼊关闭等待状态,客户端收到确认会进⼊终⽌等待态2 状态,确认号ACK设置为1,表明是⼀个确认报⽂,序号seq = v,就是之前服务器发送的最后⼀个字节+1,与第⼀次挥⼿客户端的确认号做匹配,确认号ack = u+1,继续把当前没有传输完成的数据传输完毕

        第三次挥⼿: tcp服务端给客户端发送连接释放报⽂,并进⼊最后确认状态,终⽌位FIN个确认号ACK设置为1,表⽰这是⼀个tcp连接释放,同时对之前的数据做确认,seq序号设置为w,这时服务器在半关闭状态,ack确认号设置为u+1,释放的重复确认

        第四次挥⼿: tcp客户端收到连接释放,发送确认报⽂,进⼊时间等待状态,确认号ACK = 1,表⽰是⼀个确认报⽂,序号seq = u+1,表⽰是⼀个释放报⽂,确认号ack = w+1,表⽰是⼀个确认

 

        TCP的服务器模型

        在服务器中,服务器进⾏监听后,需要创建⼀个新的套接字与客户端进⾏⼀对⼀通信,通常服务端要处理多个客户端通信,为了处理与多个客户端进⾏通信,服务器有不同的处理⽅式

        1、循环服务器

        ⼀次处理⼀个客户端通信 接收⼀个客户端连接请求后,与⼀个客户端进⾏连接通信,在与客 户端的所有通信操作后,断开连接,再与下⼀个客户端进⾏连接通信

        2、并发服务器

        可以在服务器中同时处理多个客户端的通信 在接收⼀个客户端连接之后可以进⾏通信,同时还可以与其他客户 端连接进⾏通信,可以同时处理多个客户端操作。需要使⽤多进程、多线程 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值