웹 개발자는 TCP / IP와 라우터가 요청을 관리하는 방법을 이해해야합니까? [닫은]


15

오늘 중요한 사이트에서 개발자로서의 직책에 대한 면접을 가졌습니다. 그들은 문제없이 대답 할 수있는 수많은 프로그래밍 언어 관련 질문을했지만 PC에서 웹 서버에 요청하면 TCP / IP 요청이 어떻게 이루어 졌는지에 대한 질문을 시작했습니다. 나는 학생으로서 그 내용을 받았지만 나는 웹 개발에서 주로 일하고 있기 때문에 잘 기억하지 못한다. 내 질문은 :

주로 웹 응용 프로그램을 다루는 소프트웨어 개발자로서 TCP / IP에 대한 광범위한 지식과 라우터가 요청을 관리하는 방법 또는 블랙 박스 지식에 대한 지식이 필요합니까?


TCP / IP 요청이 개념적인 수준에서 어떻게 이루어지는 지에 대해 더 알고 싶거나 구체적인 내용을 알고 싶습니까? TCP / IP는 네트워크에서 통신 할 때마다 후드 아래에서 사용됩니다. 나는 개인적 으로 적어도 개념적인 수준에서 일들이 어떻게 작동하는지 이해하는 것이 매우 중요 하다고 생각합니다 . 이를 통해 문제를 발견하고 더 나은 솔루션을 설계 할 수 있습니다.
Parag

답변:


25

지식의이 종류는 온다 매우 유용 매우 드물게.

예를 들어 운영팀이 라우터 / 방화벽 /로드 밸런서 뒤에 프로덕션 사이트를 설정하고 테스트 환경과 약간 다르게 설정하면 이와 관련된 문제가 발생하면이를 파악하는 데 도움이됩니다. 코드의 이상한 점을 파지 않고 신속하게 작전과 대화하십시오. 대화를 할 때 그들의 언어를 이해하는 것이 훨씬 더 좋습니다.

그러나 나는 왜 사람들이 인터뷰에서이 내용에 많은 비중을 두 었는지 이해하지 못합니다. 특히 주니어 프로그래머라면 더욱 그렇습니다. 팀의 모든 사람에게 반드시 필요한 지식은 아니며 교육을받을 수 있습니다.


2
후배 프로그래머에게는 좋은 점이지만, @forgotmynick가 어떤 레벨에 지원하는지 잘 모르겠습니다 :-)
Dean Harding

@Dean-공정한 포인트. 학생 시절에 언급 한 사람들이 5 년 이상 개발되지 않았다고 가정하는 경향이 있습니다. 그러나 당신이 옳습니다. 항상 그런 것은 아닙니다.
pdr

1
라우터가 자동으로 연결을 끊을 때 어떤 일이 발생하는지 아는 것은 프로덕션 환경에서 정말 좋습니다. 두 번 이상 물린 적이 있습니다.

@ pdr-동의하지 않습니다. 이 유형의 지식은 왜 시간이 오래 걸리는지 또는 사이트에 대한 업데이트가 사용자의 브라우저에 표시되지 않는 이유를 알고 싶을 때 유용합니다. 네트워크 지식이있는 사람이라면 누구나 캐싱이라는 답을 알고있을 것입니다. 컨설턴트로서 개인적으로 나는 사람들이 이런 것들을 알면 피할 수있는 어리석게도 간단하고 (비용이 많이 드는) 회사를 만들었습니다. 이 로켓 과학이나 양자 역학도 마찬가지입니다. 나는 c'mon을 의미합니다 .jr 개발자 가 이것에 대해 알지 못하는 변명은 없습니다 (특히 CS 배경의 경우).
luis.espinal

@ luis.espinal-솔직히 말해서, 같은 카테고리에서 캐싱을 한 번에 묶지 않았을 것이라고 생각합니다. 네트워킹이 아니라 브라우저입니다. 캐싱 (브라우저 또는 서버)은 단순하지만 많은 어려움이 있기 때문에 모든 사람이 이해해야하는 것입니다. 그러나 TCP / IP?
pdr

16

개인적인 의견 은 웹 개발자 저수준 프로토콜이 어떻게 작동하는지 알아야 한다는 것입니다. 특히 HTTP뿐만 아니라 TCP / IP의 (적어도 기본 사항). 사이트의 복잡성에 따라 HTTP 추적 덤프 또는 tcpdump로그 를 살펴 봐야 할 수도 있습니다 .이 경우 최소한 TCP / IP에 대한 지식이 필요합니다.

이제 실제로 tcpdump를보아야하는지 여부는 사이트의 특성에 따라 다릅니다. 사용자와 서버의 많은 대형 사이트가있는 경우 예를 들어, 요청의 비교적 많은 수를 만드는 동안 여러 데이터 센터를 확산 (예 : 아약스,뿐만 아니라 특히 혜성 스타일의 요청), 다음 tcpdumps '이 당신에게 뭔가 할 수있다 볼 필요가 있습니다.

당신이 작업하고있는 모든 것이 인트라넷 사이트이거나 상당히 단순한 것이라면, 그 지식은 그다지 중요하지 않을 수도 있지만, 저수준의 것을 아는 것이 항상 도움이 될 것이라고 생각합니다.


3
lol ... 나는 http를 저수준 프로토콜로 부르지 않을 것이다
Pemdas

2
@ Permdas : 그것은 모두 상대적입니다. HTTP는 TCP보다 높지만 SOAP보다 낮습니다.
Dean Harding

1
SOAP는 프로토콜보다 구현 고유의 것입니다. 불행하게도 그 구현은 그들이 "프로토콜"이라고 부르는, 그래서 서로 가까이있는
kagali 산

HTTP : 그렇습니다. TCP / IP : 어떻게 더 높은 수준의 작업을 수행하는 방법과 이유에 대한 기초적인 이해는 아마 좋습니다. 웹 개발 환경에서 깊은 지식이 필요하거나 너무 자주 유용하다고 생각합니다.
Andy Hunt

7

비교적 복잡한 문제를 디버깅하려고 할 때 매우 유용하고 응용 프로그램에 예기치 않은 성능 문제가있는 이유를 이해해야하기 때문에 코딩 할 레이어 아래의 레이어가 어떻게 동작하는지 이해하는 것이 항상 유용합니다 WAN에서 또는 NAT를 사용하는 사용자에게 실패하는 이유 등. 개발자, 웹 서버 관리자, 네트워크 관리자 및 데이터베이스 관리자와의 문제를 논의하는 방에 있어야하는 경우에도 귀중합니다. 다른 사람들이 사용하는 언어를 말하고 이해하고 지적인 질문을합니다. 다양한 구현 세부 정보를 더 많이 이해할수록 예를 들어 확장 가능한 사이트를 구축 할 가능성이 높아집니다.

즉, 작성중인 코드에서 6 계층의 추상화에 대해 더 많이 배우는 것이 더 나은 웹 개발자가 될 가능성이 거의 없다는 점에서 분명히 수익이 감소하는 지점이 있습니다. 따라서 그것은 "광범위한"의 의미에 어느 정도 의존 할 것입니다. 라우터가 요청을 관리하는 방법의 기본 사항을 이해하는 것은 매우 유용 할 수 있지만 네트워크 관리자가 원하는 응용 프로그램에서 작업하지 않는 경우 다른 종류의 트래픽을 우선 순위를 지정하도록 다른 라우터를 구성하는 방법을 이해하는 것은 그리 유용하지 않을 수 있습니다. 스로틀.

그러나 특별히 실용적이지 않더라도 강력한 개발자는 스택의 여러 계층에 대해 궁금한 점이 있고 그렇게하는 데 분명한 이점이없는 경우에도 이에 대해 배우는 경향이 있습니다. 관계형 데이터베이스의 작동 방식이나 네트워킹 작동 방식에 대해 깊이 이해 한 웹 개발자는 웹 개발 기술 만 알고있는 웹 개발자보다 강력 할 것으로 기대합니다. 분명히, 그것은 완벽한 상관 관계는 아니지만 물어 보는 것이 합리적입니다.


"다른 사용자가 사용하는 언어를 말하고 이해할 수 있도록 개발자, 웹 서버 관리자, 네트워크 관리자 및 데이터베이스 관리자와 문제를 논의하는 방에 있어야하는 경우에도
Parag

5

구축중인 웹 사이트에 따라 다릅니다. 중소 규모 웹 사이트의 경우 TCP / IP에 대한 기본 지식이 적합합니다.

트래픽 측면에서 최상위 웹 사이트에서 작업하는 경우 기본 네트워킹 프로토콜 및 인프라에 대한 자세한 지식이 매우 중요합니다. 좋은 디자인 결정을 내릴 때 자주 안내합니다.


3

제 생각에는 일반적으로 웹 개발 위치에서 비트가 응용 프로그램에서 서버로 어떻게 돌아가는지를 알아야합니다. 프로그래밍에는 블랙 박스가 없습니다. 모든 추상화 누출 .


2

주로 웹 응용 프로그램을 다루는 소프트웨어 개발자로서 TCP / IP에 대한 광범위한 지식과 라우터가 요청을 관리하는 방법 또는 저에게 블랙 박스 지식이 필요합니까?

IMO, 당신이 소프트웨어 개발자라는 사실 (CS 배경을 가지고 있다고 가정)은 이것들에 대해 알아야합니다. 특히 웹 개발을하는 경우. 내 의견 중 하나에서 언급했듯이 네트워크 / 인터넷 아키텍처의 기본 사항을 모르는 사람들이 실제로 바보 같은 오류를 수정하면 컨설팅 비용이 많이 들었습니다.

ZOMG, 내 웹 사이트의 변경 사항이 표시되지 않습니다. plz teh help! * ZOMG, 세션이 어딘가에 캐시되어 있기 때문에 사람들의 프로필이 교차되고 있습니다. 도움이 필요합니다! * ZOMG, 인증 된 사용자를위한 안전한 콘텐츠가 있지만 책갈피를 사용하여 사람들에게 접근 할 수 있지만 피 묻은 인증 화면이 나타나지 않습니다. 도움! "

... 그리고 등등 ... 슬프게도 ...

웹 응용 프로그램과 사용자 브라우저 사이에는 응용 프로그램, 응용 프로그램의 NIC, 라우터 및 방화벽, http 서버 내부 NIC, http 서버, http 서버 아웃 바운드 NIC 및 기타 브라우저가 있습니다. 라우터와 가장 확실한 방화벽. 그런 다음 캐싱 장치 및 가능하면 SSL 장치. 그런 다음 더 많은 라우터와 캐싱 서버를 사용하여 인터넷에 접속 한 다음 사용자 브라우저 (및 내부 캐시)로 이동하십시오.

심각한 문제가 발생할 수 있으며 네트워킹, 네트워크 프로토콜, 운영 체제 / sysadmin 및 인터넷 아키텍처에 대한 지식이 부족한 경우 대부분의 개발자부터 IT 운영 부서의 도움을받을 수 있습니다. 인프라에 액세스 할 수 없으며 문제를 해결할 때 찾을 위치를 알 수 없습니다). 최악의 경우, 그것은 당신을 정말로 엉뚱한 웹 개발자로 만들 것입니다.

웹 개발의 프로그래밍 측면은 바로 한 측면입니다. 성공적인 실행은 IT 운영에 당연하거나 맹목적으로 위임 할 수없는 다른 기술 (특히 네트워킹 및 시스템 관리)의 최상위에 위치합니다. 그것은 당신이 것을 의미하지 않는다 있어야 네트워크 / OS 문제 해결에 대한 책임을 져야하지만,

ㅏ. 네트워크 / OS 수준에서 무엇이 잘못 될 수 있는지 알고 있어야 응용 프로그램에 대해 전혀 모르는 IT OPS와 협력하고 안내 할 수 있습니다. 비. 이러한 지식을 통해 시스템을 엔지니어링하여 그러한 오류를 피하거나 최소한 개선하고 정상적으로 대처할 수 있습니다.

프로그래밍은 엔지니어링 및 개발의 한 측면 일뿐입니다. 기본 기술이 될 수 없으며 일반적으로 엔터프라이즈 개발, 특히 웹 개발에서 장기적으로 성공할 수 있습니다. 그리고 솔직히 말해서, 이것들은 학교에서 또는 졸업 전에 또는 (직업 시장에 즉시 들어가는 즉시) 자기 학습을 통해 (매우 단단히) 배워야 할 것들입니다.

행운을 빕니다.


1

TCP / IP와 라우터가 요청을 관리하는 방법을 이해하는 것이 중요합니다. 그러나 당신은 인터뷰에서 그것에 대한 광범위한 지식 이 필요하다는 것을 모른다 . 이전에는 덜 표현되었습니다. 그렇지 않으면 둘 다 시간을 낭비한 것입니다. 함정처럼 들립니다.

그러나 아키텍트 역할의 경우,이 지식은 어떤 경우에도 중요하다고 믿습니다. 직원은 맞춤형 솔루션에서 아키텍처를 사용하거나 복제하여이를 활용할 수있는 솔루션을 제공 할 것입니다. Tanenbaum Networks와 주말을 보내십시오!


1

이것은 까다로운 질문입니다. 예, 모든 개발자는 기본 지식 TCP / IP를 가지고 있어야 하며 해당 프로토콜을 기반으로하는 네트워크 구성 방법을 알고 있어야합니다 . 그러나 이것은 기본 지식이 얼마나 광범위하게 고려 되는지에 대한 질문으로 이어진다 .

특정 문제에 직면하지 않고 (따라서 실제로 "어떻게 구성되어 있는지"알지 않아도 됨) 개발자는 패킷이 무엇인지, 네트워크를 통해 패킷이 어떻게 배포되는지 알아야합니다 (패킷이 어떤 유형의 기계인지 알 수 있음) 와 접촉). 그러나 라우터가 모든 수신자 에게 패킷을 분배 하고 스위치가 특정 수신자 에게 패킷을 전달한다는 것을 아는 것으로 충분하다고 생각합니다 . 나는 또한 모든 서브넷 물건을 개발자에게 요구하지 않을 것입니다-나는 모든 세부 사항을 알지 못합니다. ;-) 서브넷이 분리 될 수 있고 패킷이 net A에서 net B 로 라우팅 되어야 하지만 모든 것을 세부 사항은 일반적인 개발자에게 많은 방법입니다.

나는 그것이 자동차를 운전하는 것과 조금 비슷하다고 생각합니다. 왜 엔진이 필요한지, 왜 연료가 필요한지 알아야하지만 일반 운전자는 연소 과정에서 연료와 공기의 완벽한 혼합을 계산하는 방법을 알 필요가 없습니다.


0

주변에서 일어나는 일의 기본을 이해하지 못하는 사람들보다 실망스러운 일은 거의 없습니다. 그것은 같은 질문을 계속해서 반복하게합니다 (물론 약간 다른 형태로).

반복되는 질문을하면 책을 찰 차례입니다. 내가받은 질문의 최근 예 :

  • "xyz 인 경우 네트워크를 어떻게 구성합니까?"...
  • "abc 인 경우 네트워크를 어떻게 구성합니까?"...
  • 반복...

사실, 나는 배우는 것보다 다시 묻기가 더 쉬운 사람들로부터 많은 반복 질문을 받았으며, 그것들을 추적하고 Powerpoint 슬라이드를 만들기 시작했습니다. 지금은 6 개월마다 실습 수업을합니다. 그러면 사람들은 내가 만든 슬라이드를 참조 할 수 있습니다. 나중에, 우리가 수업 시간에 다룬 내용을 물을 때, 나는 그것을 부드럽게 언급하며, 보통 우리가 그 내용을 다룬 것을 기억하고 스스로 슬라이드를 다시 읽습니다. 그렇게하는 사람들은 실제로 그 주제를 더 잘 배우고 가치있는 것으로 생각합니다. 업무 시간에 방해가되지 않는 형태로 현저한 차이를 만들었습니다.

또 다른 생각 : 실제 세계에서 실제 시스템에는 많은 단점과 문제가 있으므로 도메인 고유의 지식 이상을 알지 못하는 것은 매우 제한적입니다. 기본 원리가 어떻게 작동하는지 아는 것은 당신에게만 도움이 될 수 있습니다.

이제 그것이 정말로 알아야 할 범위를 벗어났다면 걱정하지 마십시오. 그러나 질문을 두 번 이상 묻는다면 배우십시오. 후회하지 않을 것입니다.

질문을 해준 브라보. 배우는 것을 멈추지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.