LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices


Reply
  Search this Thread
Old 03-25-2014, 12:41 PM   #1
sryzdn
Member
 
Registered: Feb 2013
Posts: 274

Rep: Reputation: 9
networking in linux


Hi,

I need help on learning networking in linux. It's about 2 years that I am dabbling on different linux distros. But, I really want to learn it profoundly. Last year, I went to LPIC1 (101, 102) courses. I was Ok with what they taught until the sessions about networking started.

I read about some networking in linux and enrolled for a Bash scripting class this year. Again, there came the networking!!!! My head was just stuck. I felt really poor in the class and left it.

My major is not computer engineering but still I need and I want to have a vast knowledge in linux and programming. How could I ever get passed this networking stuff when I have no access to servers and networks and.... ?
 
Old 03-25-2014, 01:13 PM   #2
rtmistler
Moderator
 
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,883
Blog Entries: 13

Rep: Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930
First off, bash scripting has little to do with networking.

Secondly, what's the big hang up there? You absolutely can learn a ton about Linux and programming and not be a real core network knowledgeable person. Why don't you describe a bit more what the exact frustration points were for you so that people can either assist you in getting over that blocking point, or understand how close or far you are in your learning. Because just projecting frustration about a general term tells me that you give up immediately; hence why should anyone bother giving you anything difficult to do, if you're just going to state "I don't understand and can't understand so I give up!" at the first problem you encounter.

To back up a bit. You're on this forum; hence you're on the internet, have managed to use "a" system, be that Windows, Linux, a Mac, or something else which gets you on the internet, and you managed to sign up for this forum. (You've made over 150 posts to this forum and been signed up for over a year, so you're not that clueless of a person.)

Recommendations for bash scripting, read this Advanced Bash-Scripting Guide and you'll see tons of example scripts in the back of it; many of which have zero to do with networking.

If you desire to learn about other programming languages, then ask for some recommendations there.

Another point is do you have a Linux computer? If not, then take the time to install a distribution, get familiar with the command line, then work at writing scripts, I recommend you actually learn the C language; because it is a basis for programming and if you learn C and can deal with it, then you can deal with C++, C#, Python, Java, ... a great deal of other languages which are similar, but have their differences.

If you desire to never write any programs which deal with network stacks or content with the network interface; fine. But that may limit you a bit. You don't need to be an expert, but I will tell you now that if you were my coworker or employee and I asked you to write a script to copy files from one system to another where you'd have to do that across the network and you responded saying that you know nothing about networking, can't deal with it, don't want to ..., I would conclude "useless" about you and probably never ask you to do anything again and never depend on your talent for anything. That is harsh, I wouldn't do that immediately the first time it happened, but if I ran up against a brick wall a few times in asking you to do a task where you just said you couldn't deal with a particular thing which is no more difficult than the subject of programming; eventually I would be forced to think you weren't worth utilizing on projects. I'd probably offer to help, or show examples first, but if someone dismisses one subject area just claiming that they can't deal with it, that's frustrating even to the most patient of teachers.

Many of us are in R&D positions not because we're academics who are interested in looking at and solving interesting problems, we're actually designing solutions which clients or customers ask us to do. Many times I'm asked to do new stuff that I've never even heard about before. You need to learn to be tenacious a bit and self confident that you can learn and be successful at projects, regardless of the tasks or development subject areas which you need to work on to accomplish your goals.

Last edited by rtmistler; 03-25-2014 at 01:18 PM.
 
Old 03-25-2014, 01:31 PM   #3
sryzdn
Member
 
Registered: Feb 2013
Posts: 274

Original Poster
Rep: Reputation: 9
Quote:
First off, bash scripting has little to do with networking.
yes, I thought the same since I started reading texts on scripting. However, in the class, I just saw that every single example is kind of related to networking.

Quote:
Secondly, what's the big hang up there? You absolutely can learn a ton about Linux and programming and not be a real core network knowledgeable person. Why don't you describe a bit more what the exact frustration points were for you so that people can either assist you in getting over that blocking point, or understand how close or far you are in your learning. Because just projecting frustration about a general term tells me that you give up immediately; hence why should anyone bother giving you anything difficult to do, if you're just going to state "I don't understand and can't understand so I give up!" at the first problem you encounter.
I'm sorry if the tone of my post was like I have given up. Absolutely NO! I just need to learn networking to increase my pace in linux.

To make it more clear, it is about 8 years that I write programs in C++ and it is about two years that I have migrated to linux. Some people told me that I need to install a virtual machine and start learning the networking if I want to advance in learning linux stuff. I still cannot keep up with those who have enrolled in the class. (I mean those who work linux networking in the real world)

Quote:
if you were my coworker or employee and I asked you to write a script to copy files from one system to another where you'd have to do that across the network and you responded saying that you know nothing about networking, can't deal with it, don't want to ...
That is exactly vice versa. I would never answer you like that and I am willing to put as much time and energy on learning it rather than bringing excuses. I wish I was working somewhere I could have access to networks and .... But ....I am just looking for the "right way" to learn networking in linux for someone who is more interested in programming.

In addition, I do appreciate your encouragement.
 
Old 03-25-2014, 01:45 PM   #4
whizje
Member
 
Registered: Sep 2008
Location: The Netherlands
Distribution: Slackware64 current
Posts: 594

Rep: Reputation: 141Reputation: 141
With a small virtual machine it only needs a command line you can experiment with a network build your own bridge/router experiment with iptables(firewall). Have a look at virtualbox for your virtual machine.
 
Old 03-25-2014, 01:54 PM   #5
rtmistler
Moderator
 
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,883
Blog Entries: 13

Rep: Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930
One thing to do would be to speak to the instructor, explain the difficulties you're having in keeping up, inquire as to whether or not they feel that the networking which they're doing is expert level for people like system administrators, or normal network things which one normally sees in a system. Find out if the class in general is overdoing it, or if you're in the wrong class; or if the instructor recommends some starting points. Even if the class is behind you, see if you can query about that anyways. If it ended up being a class dominated by people from one particular company and they forced the agenda to revolve around routing protocol design, then that's probably unfair to the uninitiate. If the intention of the class is to teach that topic, then a different story where it's probably best to ask the instructor what better primer courses you should consider first.

IP networking is one topic. One should not need to know all the details about how things like a proxy server, or an address translation device works, or all the stuff about MAC address filtering and such in order to do programming for applications or scripts which may use the network. For instance if you can write a script using say the scp(1) command to perform a secure copy from hostname-1 to hostname-2, or ip-address-1 to ip-address-2, that shouldn't be this huge deal, it would be a command with arguments; the arguments being the systems' names or IP addresses. Typing no more than the ifconfig(8) command should just give you address information for your system.

I think there's maybe "application level" network programming where you might have to determine your IP address, or your hostname, or not; but then use things like FTP, or SCP, or other network commands to accomplish tasks. A common one, I'm not really familiar with is some form of command line send mail command which script or applications use to automatically send email for warnings or alerts.

Then there would be network protocol level which deals more directly with the network packets and the contents of them. That can span anywhere from understanding one particular protocol very well, to doing things like a network router or network switch which looks at all packets and chooses next destinations based on some set of rules.

Perhaps start with the network application level of understanding and then try to catch some keywords that the other persons in class were covering where you lost cohesion rapidly and see if those subject areas are highly specialized or instead topics which you may want to study in an organized or paced fashion versus under a confused situation where you're trying to keep pace.
 
1 members found this post helpful.
Old 03-25-2014, 04:03 PM   #6
jefro
Moderator
 
Registered: Mar 2008
Posts: 21,974

Rep: Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623Reputation: 3623
I am missing the part where you are having problems.

Are you trying to use shell commands to do simple network tasks?
 
Old 03-25-2014, 11:33 PM   #7
sryzdn
Member
 
Registered: Feb 2013
Posts: 274

Original Poster
Rep: Reputation: 9
Quote:
Originally Posted by jefro View Post
Are you trying to use shell commands to do simple network tasks?
Yes. The code we're working on runs parallel on multiple processors.
I need to use shell commands to implement mpi libraries for the execution.
 
Old 03-26-2014, 07:01 AM   #8
rtmistler
Moderator
 
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,883
Blog Entries: 13

Rep: Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930
MPI was originally written for FORTRAN and C. I only say this because you say you're using scripts. This is a bit confusing because to me parallel processing programming architecture would seem to be more efficient, more purposeful if you used a real programming language. O.K. I get it that it doesn't matter, scripts can be fast and the whole point is synchronization across systems; hence other systems can be delayed until the critical path has finished. But eventually one has to debug performance issues and identify the lowest performing paths. All that is just my bias, sorry.

But also, this is not networking per se, it is instead understand synchronization by utilization of the MPI libraries which you are/were using in that course.

So a recommendation is to get fundamental with MPI, start reading chapter one. Experiment at your own pace until you get it forwards, backwards, sideways, ... from any perspective. I had a ton of trouble when I started GUI programming; I never wanted to use the "designer" tools that everyone makes, and I feel I'm much more the better for it because now I can use them, but I understand the structure of how GUI softwares work, and understand how I can change them to make the user interface behave the way I intend it too. The point there is that I did the equivalent of a GUI Hello World a ton of times, adding a button, styling the button, changing the actions performed, changing the image of the button, and so forth. So I personally would do this with MPI if I weren't "getting" the concept, but needed or wanted too.

There's a fundamental level, one system to one system instead of a cluster. So start with just two systems; establish point to point communications, have one be a complete slave and one be a complete master first; then change it so that they both depend on messaging from each other. Play with that architecture until you feel you understand it well enough; and then move into clustering. I feel the only way to learn a complex talent like that is to experience it; which you've tried, however at the pace of others. So try it at your own pace and continue to try to expand the examples but taking the time to understand each example fully before you progress ahead.
 
1 members found this post helpful.
Old 03-26-2014, 01:44 PM   #9
sryzdn
Member
 
Registered: Feb 2013
Posts: 274

Original Poster
Rep: Reputation: 9
Rtmistler,

It is quite a while that we are working with the code and I have started studying about MPI a while ago. It was originally written in Fortran and I accepted to change the whole to C++ with neat optimized oop approach. I am trying to translate the old scripts to C++ too. But, I am also offered to administer the clusters that people in the university are going to run their codes on them. That's why I will need networking and scripting.

I read your answers today more than twice and seriously, I said to myself, I am in this and I should go to the end of it. I am really grateful for your great help.

Last edited by sryzdn; 03-26-2014 at 01:45 PM.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Is linux networking like windows networking in setting up a small office network? boondox Linux - Networking 6 01-26-2012 06:23 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie

All times are GMT -5. The time now is 04:13 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration