Could you please tell me what the whole process looks like after entering the Baidu URL?

First of all, when we enter https://www.baidu.com in the browser, what we want is to find Baidu's server to request data, so where to find Baidu's server address?


Hello everyone, I am Afan. Although the golden three and the silver four have passed, but the golden nine and the silver ten are coming soon. As a fan who is prepared for danger in times of peace, she is always preparing to study and interview. Today, I believe that many interviewees have been asked about this topic, but the question is actually not. Difficult, but if some friends have not encountered it, they may not think about the specific details, or they may know many things but do not know where the interviewer asks this question, so they will be owed to think about it. Not the point. Let's take a look at what happened in the whole process in turn.

 

Let's first think about what processes will be involved in the whole process:

  • DNS
  • establish connection
  • send request
  • Response data
  • Render the page

First of all, when we enter https://www.baidu.com in the browser, what we want is to find Baidu's server to request data, then where to find Baidu's server address? The request server must know the server's ip Address, domain name address alone is not enough. At this time, what we think of is that we need to find the ip address of the server based on the domain name, so there will be a DNS resolution process. The entire DNS resolution process is also very complicated, involving the layer-by-layer search process of DNS, as well as the entire complex DNS load and resolution. In the interview process, if you have a deeper understanding of DNS, you can expand it. If you don’t understand, just take it with you. Don’t dig for yourself.

Here we assume that the IP address of a Baidu server obtained after DNS resolution and various load balancing is 1.2.3.4, then when the IP address is obtained, according to the web service standards, we also know that the default port is 80, if it is not the default port If it is, the address will be carried, so the browser can establish a connection with the server at this time. I believe everyone knows that the process of establishing a connection is a TCP three-way handshake.

 

Regarding the process of establishing a TCP connection, there is an article introduced in the front of the official account, and interested friends can search for it. I have to say here that TCP’s three handshake and four wave of hands are also very important knowledge points in the interview process. A fan often encounters this problem throughout his career, whether it is an interview or an interview with others, and it is not about this. How many questions test people, mainly because I want to see if the basic skills are solid.

When the connection is established, the client and the server will interact. The current Internet services are based on HTTP, so at this time the client will initiate an HTTP request, and each request will carry related request parameters to ensure that the server can Return the correct data according to the relevant parameters. The request will reach our application through the network, regardless of whether there is Nginx or other load in the middle, it will eventually reach the entrance of our application.

At this time, if the application is based on SpringMVC, then you can also talk about the flow of SpringMVC's front controller, processor mapper, processor adapter, processor Handler, and view resolver. That said, don’t say it if you are unfamiliar. Just take it.

When the server obtains the corresponding data according to the client's request information, it will return a response message, carrying the status code and related data to the front end. After the current end obtains the data, the entire page will be rendered. The rendering of the entire front-end page will be done after a while. As a back-end programmer, the interviewer should not ask about the details of the rendering. If asked, it would be embarrassing.

In fact, this topic can have many extended issues, such as the three-way handshake and four waved hands of the TCP connection with the DNS resolution process mentioned above. You can also extend the difference between the HTTP protocol and the HTTPS protocol and the seven aspects of the network. What is the layer structure? Then you can ask about Nginx and load balancing. By the way, if your project is load balancing, how do you control traffic distribution and expand capacity and disaster tolerance in high concurrency scenarios.

Generally speaking, as a programmer, there is still a lot to learn, and in the interview process, we have to use our strengths and avoid weaknesses, try to talk to the places we are familiar with, and try not to mention the places that we are not familiar with. If you are really asked to know Just know if you don't know or don't know, honestly confess with the interviewer, don't try to get through, you must know that the interviewer is not stupid.

Well, today I shared an interview question with you, I hope it will be helpful to you, more content about our future articles, continue to share with you.