基础知识_网络

计算机网络基础知识与常见题目。

网络的分层体系结构

  • OSI七层模型

    1
    2
    3
    4
    5
    6
    7
    应用层 |
    表示层 } 数据
    会话层 |
    传输层:分段
    网络层:分组数据报
    数据链路层:帧
    物理层:比特流
  • TCP/IP四层模型

    1
    2
    3
    4
    应用层
    运输层
    网际层
    网络接口层
  • 五层

    1
    2
    3
    4
    5
    应用层:http、ftp、smtp、telnet
    传输层:tcp、udp
    网络层:IP
    数据链路层:
    物理层:IEEE802.2、Ethernet v.2

TCP和UDP的区别

TCP UDP
面向连接的、可靠的传输 无连接、不可靠的传输
面向字节流,有一个缓冲区来储存字节序列 面向报文的,来一个报文就发送一>
只能是点对点的 可以一对一、一对多、多对多
有三次握手、确认、拥塞控制、流量控制等机制来保证可靠传输 没有这些机制
占用资源多,速度慢 速度快
适合对数据可靠性要求严格的场景,如传输文件、网页 适合对时间要求严格的>

TCP拥塞控制的几个算法

  • 慢启动
  • 拥塞避免
  • 快速重传
  • 快速恢复

建立TCP服务器的系统调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
tcp client      tcp server
socket socket
bind bind
connect listen
send accept
receive receive
send
========================
int socket(int protofamily, int so_type, int protocol);
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
int listen(int sockfd, int backlog);
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen);
int send(int sockfd, const void *msg, int len, int flags);
int recv(int sockfd, void *buf, int len, unsigned int flags);

简要描述TCP三次握手与四次挥手的过程

  • 第一次握手:client设置syn包中的同步序列号SYN=i,然后将syn包发送到服务器,并进入SYN_SENT状态,等待服务器确认。
  • 第二次:服务器收到syn包,需要进行确认,设置(ack=i+1),同时自己也发一个syn包(SYN=j),即发送SYN+ACK包,然后服务器进入SYN_RECV状态。
  • 第三次:客户端收到SYN+ACK包之后,向服务器发送ACK包(ack=j+1)进行确认,然后客户端和服务器都会进入ESTABLISHED状态,完成三次握手。
  • 传输数据
  • 第一次挥手:主动关闭方A发送FIN包(seq=a).
  • 第二次:被动关闭方B回复ACK包(seq=a+1).
  • 第三次:B成为新的主动关闭方,向A发送FIN包(seq=b)
  • 第四次:A回复ACK包(seq=b+1)

HTTP的状态码

1
2
3
4
5
6
7
8
9
10
1xx 代表请求已被接受,需要继续处理。但由于HTTP/1.0中没有定义任何1xx状态码,所以很少使用。
2×× 代表请求已成功被服务器接收、理解、并接受。
200 OK 请求成功
3xx 一般是用来重定向
4xx 请求错误,一般是客户端导致的错误
400 Bad Request 当前请求有误,无法被理解
401 Unauthorized 当前请求需要用户验证
403 Forbidden 服务器已经理解请求,但是拒绝执行,比如访问了没有权限的目录。
404 Not Found 服务器没有找到所请求的资源
5xx 服务器内部错误

ping命令的原理

%%%%

点击网页上的登录按钮后,发生了什么

  • DNS解析
      1.首先查找浏览器缓存,看是否有该网址对应的IP,如果有则返回IP,否则再去调用操作系统缓存。
      2.如果没找到,再发送请求到路由器上,如果有则返回。
      3.仍然没找到,请求就会被发送到DNS服务器。
    4.DNS的查询过程分别经过:浏览器缓存-操作系统缓存-路由器缓存-本地域名服务器-根域名服务器。
  • TCP连接
      向获取到的ip进行三次握手,获取tcp连接。
  • 浏览器发送HTTP请求
      1.浏览器构造http请求,然后发送到指定ip。
      2.http请求会分别被加上tcp头、ip头,然后发送出去。
  • 服务器接收请求并回复
      1.一层层把消息头去掉之后,获取到http请求。
      2.然后执行相应的请求,再进行回复。
  • 浏览器接收到html,进行解析和渲染页面
  • 四次挥手,关闭tcp连接

应用层协议常用的端口

1
2
3
4
5
6
7
8
文件传输协议            ftp     21
安全shell ssh 22
远程登录协议 telnet 23
传输邮件服务 smtp 25
文本传输协议 http 80
访问远程服务器上的邮件 pop3 110
安全的超文本传输服务 https 443
dns 53

欢迎与我分享你的看法。
转载请注明出处:http://taowusheng.cn/