关于笔试中网络编程常考的点(未完待续)

网络编程是很重要的内容,所以在这个博客里,把笔试中有关网络编程的点都记录一下

1.iso7层模型

简要概述

应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

1.应用层(数据单元为报文)

常见协议 :http ftp dns www smtp

其中以http为例

建立tcp连接,浏览器向服务器发送请求指令,浏览器向服务器发送请求信息,服务器应答,服务器发送应答头信息,服务器向浏览器发送数据,服务器关闭tcp连接

ftp :文件交互式协议

域名系统:DNS 实现网络设备名字到ip地址映射的动作

邮件传输协议:SMTP

网络管理协议:SMNP

2.表示层(报文)

负责数据的转换,将下一层的数据转化为上层能够处理的数据

3.会话层 (报文)

通信管理,负责建立和断开通信连接。

4,传输层(数据段)

负责节点之间的数据传输,其中最常见的两个协议为tcp和udp。

tcp协议简介:面向连接的,传输可靠的,速率慢,以字节流的形式传递,适合需要通信可靠的场合。

udp协议简介:面向无连接的,传输不可靠,应用在传输速度要求高的场合,所需资源少。

5.网络层(数据包)

选择合适的网间路由和交换节点

负责端到端之间的传输,网络层的协议有icmp,ip,rip,igrp,arr,rarp

Ip为主机提供一种不可靠的,无连接的数据传输方式

arp协议,通过查找ip地址从而得出对应的mac地址,发送路由器对应端口的mac地址。

6.数据链路层(数据帧) 网桥和交换机(全双工)将网络层拿下来的数据组装成帧,

7.物理层(比特)

2.网络编程中设计并发服务器,多进程和多线程的区别

1.子进程是父进程的复制品,子进程获得了父进程的数据空间,堆和栈的复制品

2.线程与同进程的其他线程共享数据,但是拥有自己的栈空间,拥有独立的执行序列。

3.线程执行开销小,但是不利于资源的保护,进程则相反,

总结,每个进程拥有自己的地址空间,而线程则是共享地址空间,其他的区别都是由此而来。

3.简述tcp/ip网络层

实现数据交换 实现路由器与主机,主机与主机,主机与路由器之间的数据交换(传数据段)

协议

ip协议:无连接,不可靠,尽力而为的数据报传输模式 ip数据报的首部为ipv4或ipv6的版本,是ip协议的主要体现

ARP协议:在ip数据报中加上目的mac地址

icmp协议:对于差错,异常发送的报文

ICMP差错报告报文:终点不可达,源点抑制,时间超过,参数问题,改变路由

(装入ip数据报文中)

ICMP询问报告报文:回送请求和回答报文,时间戳请求和回答报文,掩码地址请求和回答报文,路由器询问和通告报文

DHCP协议:请求获得目的地ip地址

网络层连接:两台主机之间

传输层连接:两个应用进程之间

4.介绍一下网络协议 RTP,RTCP,RTSP,SIP.,并描述一下icmp的作用

1.rtp协议实现多媒体数据传输 RTCP实现多媒体数据传输可靠,是一种实时传输的控制协议,rtsp,是一种实时传输的流协议,用来控制声音或影像的多媒体串流协议

2.因为传输的数据量大,且交互量大,所以不用传统的tcp/ip而是用rtp协议

TCP重传机制

TCP拥塞控制机制

TCP报文头比UDP保文头要大

TCP的启动速度慢

icmp的作用:

ICMP协议是TCP/IP协议的一个子协议。用在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

这些控制消息虽然不传递用户数据,但是对于用户数据的传输起着重要的作用

3.总而言之,RTSP发起/终结流媒体之后,再通过RTP协议传输流媒体数据 ,RTCP对RTP进行控制,同步。既然叫协议就要满足各自的标准,比如各自协议里面的头、参数、步骤(比如RTP步骤包含tcp/udp协议),每一层都有自己的封装,然后发送出去,接收方按照各自协议解析出来

5.什么是mac地址

网卡的物理地址  数据链路层地址

6.ipv6的地址长度

128位,ipv4的地址长度为32位

7.IPsec是网络层的协议

IPSec是IPv6的组成部分,也是IPv4的可选扩展协议

每个IP分组的内容先加密在传输,即便中途被截获,攻击者由于缺乏解密数据包所必要的密钥而无法获取其中内容。

8.udp是怎么样的传输协议

udp是无连接,不可靠的传输协议

tcp是以字节流的形式将数据分割成组发出去,再到另一端将其重组起来,而udp是以数据包的形式将数据发送出去,不考虑对面能不能收到

tcp相当于两根管道,数据是一个字节一个字节的进行传输

TCP传输中有两个重要标志,SYN,ACK

TCP连接是全双工协议。先关闭读通道,再关闭写通道,因为tcp是全双工的,客户端发送一个fin信号,服务器端收到后,会发送一个ack应答,这时候客户端是不可以读的,但是任然可以发送数据,客户端收到ack信号会,会

流量控制,堵塞控制是tcp独有的,各端会分配缓冲区大小

拥塞窗口,防止网络流量过大

9.http

1.get和post的区别

post在建立tcp连接后,会先把头部数据发送给服务器,然后等待服务器响应一会,再发送数据

get是在建立tcp连接后,把头部数据和数据一起发送给服务器,所以get会比post快

2.get会将数据缓存起来,而post不会

3.get只支持url编码,post支持多种格式

4.get的请求会放在url之后,参数直接放在url里面的,存在安全问题,而post的参数是放在请求主体(httpbody)里面,参数不会被保留

第一种:直接在URL后面加参数:
localhost:21811/Handler1.ashx?id=1&name=“abc”;(url参数)安全性能低,

post传递:直接放在httpbody中,数据类型由content-type决定

但是get方法请求的长度是有限制的,浏览器对url字符有限制

post的请求可以用于修改服务器数据
 

重点:对于get方法,客户端会把请求报文和数据一起发送出去,服务器收到以后,响应200

对于post方法,客户端会先发请求报文,服务器收到后,响应100,之后客户端再发送数据,

5.http和httpS的区别

https在客户端与服务器建立tcp连接后,还会进行ssl协商(一种加密数据传输协议),之后在数据传输的过程中采样对称加密传输,这种传输的密匙在ssl协商时就已经协商好了。

6.http几个重要的状态码

1xx 表示请求正在处理

2xx 表示请求已经被成功处理完毕

http头部组成,通用头,请求头,响应头,实体头

通用头:客户端,服务器都可以用

请求头:请求报文独有的,客户端想接收什么信息

响应头:告诉客户端在于哪种服务器交互信息

实体头:content_type,告诉主体部分的数据类型

http头部和正文用/r空行分隔开来

 

 

Keepalive 和非keepalive的区别(持久连接和非持久连接)

非keepalive占用服务器开销很大?每次进行一次open/close都要给tcp分配变量和缓冲区

那keeplive有没有缺点呢,肯定是有的,比如说keeplive会长期占用系统资源

长连接,短连接的应用场景

长连接:客户端连接较少的场景,游戏

短连接:京东,淘宝

如何知道http报文的大小

小消息:通过响应报文内的content-length

大消息:使用 Transfer-Encoding:chunked 字段,不传输数据长度,客户端只知道是分组组装,这里拿牛客网的图

如果服务器知道客户端发送的数据大小,那么它就会在响应信息中有个content-length,如果不知道,则分段发送。Chunked transfer encoding

http和https的区别

1.安全性,http数据不加密,https的数据在传输过程中是加密的,对称加密和非对陈加密

2.连接方式不一样,端口不一样

3.https除了要使用到3次握手外,还要用到一个SSL的协商过程。(SSL加密传输)

10.局域网由什么组成

服务器,工作站,连接设备,传输介质,通信协议

11.ip地址的组成

网络号,主机号

子网掩码把一个网络划分成多个网络,a类,b类,c类,

32位,通过不同的主机号来识别。

8.29

iso7层模型和tcp/ip模型的区别

个人来说,tcp/ip采用应用层,传输层,网络层,数据链路层,物理层 总的来说就是将表示层和会话层整合在一起。

数据链路层的作用:两台主机之间的数据传输,总是在一段一段的链路上传递的,将网络层传下来的ip数据组装成帧,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值