In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-03-28 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >
Share
Shulou(Shulou.com)06/03 Report--
A few days ago, I argued with a friend about the method of learning network programming in a forum, and then published "panoramic Analysis of TCP Protocol problems". It was not a fierce article, but I also got some responses. Everyone was fond of Richard Stevens's two books: "TCP/IP detailed explanation (the first two volumes)" / "Unix Network programming". I put forward my own different voices, first of all, I do not agree that these two books are very important, and secondly, I think these two books are not important at all!
First of all, I declare that I am not a master or a top player, nor do I have the ability to make free phone calls to the Vatican Pope through the TCP/IP network. Just a little bit about what anyone should know, but most people do not achieve this goal in school, but it does not matter, self-study is fine, generally speaking, schools do not teach in-depth network knowledge. So now there is a problem, that is, how to learn.
If you want to be proficient in network programming, you must first understand that network programming is actually two concepts, one is network, the other is programming. Many people just learn the so-called socket interface, know what recv parameters, know XYsockopt, say they are proficient in network programming, in fact, they only know programming, and may know nothing about the network. Does he know why crossover and direct connection are distinguished in this way (further, why crossover is connected to the switch and not to the host (declaring that it is not self-negotiated, in case the programmer is in trouble]; she may know the word slow start, but does she know how to tune TCP? He may know how to configure routing, but can it be solved when there is routing confusion? These problems are often ignored by many people with professional background, they only care about programming, but ignore the network, they think that they have learned everything by programming, but they may not even know what the default gateway is.
I don't know why the college students who graduated soon after their senior year are sometimes not as good as the network management of Internet cafes. Is it a simple question of experience? There are some reasons, but there are deeper reasons. I don't want to use derogatory words like talking on paper. I just want to say that people are so enthusiastic about C that they ignore other things. wouldn't it be better to do the same thing with bash? Why only C can reflect the technical content? Because I was attached to C, I pounced on socket, so I thought that connecting the network cable, routing, writing scripts and so on were all done by the network manager. As a result, I was a code worker. Of course, this phenomenon may have something to do with the curriculum arrangement of the university, but fortunately I did not accept that arrangement. At that time, we simply trained the network protocol and computer courses, and then we also took the wire pliers to make the network cable, just like migrant workers. However, it was at that time that we laid the foundation needed in the future.
Therefore, in learning the main points of network programming, the network is more important. If you understand all the protocols and master them, you have a lot of choices. You can write bash or java.... But if you only know socket, then beware of the danger of eating raw rice. Your existing ideas will prevent you from learning to do things like Internet cables (you think that only those who write C are R & D). (of course, it doesn't mean you have to do Internet cables to be proficient in the Internet, just give an example). The learning curve must be determined.
Richard Stevens's two books, in a sense, are more suitable for people who already know a lot about network protocols. His "Unix Network programming" is aimed at programming, and I think there is still one missing in his "TCP/IP detailed explanation" series, that is, Volume 0: Overview of TCP/IP Protocol. If you don't know what TCP/IP is at all, you will definitely be confused or like it. His book is similar to Mao Dezao's two-volume Linux kernel scenario analysis, and of course Richard Stevens will not be republished. So it's not convenient to say anything more. The main thing I want to say is that before you read Richard Stevens's book, you need to make sure that you already understand TCP/IP.
In addition, a friend mentioned to see the implementation of TCP/IP, of course, this is necessary, to see the implementation of Linux is the most convenient. However, for yourself, it depends on whether it is necessary, if you are only an implementer or pre-sales support, then you do not need to be proficient in its implementation, because the main purpose of proficiency in its implementation is tuning, and tuning is a matter of research and development. But the most general learning route, there is always no harm in realizing it.
Although I seem to be reducing the importance of programming all the time, in fact, on the contrary, programming should be the highest, just like cooked rice, it is the ultimate realization of everything, but do not produce raw rice. Any TCP implementation is implemented in a programming language, so my advice for learning network programming is:
1. Write code and understand API, but don't stay at this stage for too long
two。 Read RFC, understand the principle, this step must be meticulous
3. It takes some time to write code, focus on principle confirmation, and make sure that what you see in RFC is true.
4. In your spare time, you can read books such as "TCP/IP detailed explanation" and "Unix Network programming". If you don't have time, forget it.
4.1. If you just want to finish your work and support your family, that's it, or move on.
5. Look at Linux's TCP/IP stack implementation and Hack it when necessary. If you really want to understand TCP/IP and do something big, it's worth taking some time at this stage.
6. Look for a network card driver to see why the network card is so designed. The main thing is to look at the description of the document and the hack driver to disprove the correctness of the document.
7. Write code and use what you have learned to continuously improve performance. this stage is completely autonomous. You should put aside all the documentation and implement an optimized protocol by yourself.
8. Write code, or write code. At this stage, you may have to contact International Daniel, mainly through Maillist....
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.