네트워크를 왜 해야하는가?(별표와 Q)

  • 모든 데이터는 네트워크를 거친다.
  • 모든 데이터는 비용이 따른다.
  • 비용이 서비스에 치명적 이슈를 준다.
  • 비용이 적게드는 Flow를 만들어야 한다. 그것이 바로 개발자의 역량

웹은 어떻게 그려지는가?

주소창에 www.naver.com을 입력했을 때 일어나는 일련의 과정들을 말해보세요.(별표와 Q)

  1. URL Parsing
    1. 스킴이 있다. 유저 인증으로 uesr:password 뭐라뭐라 써져있다.
      1. 네이버.한국이라고 쳐도 네이버로 들어가진다.
        1. 네이버.한국은 xn–뭐시기로 이루어져있음
      2. 퓨니코드 인코딩을 통해서 들어가지는 것.
      3. HSTS이라는 목록을 크롬이 가지고 있다. 이 목록은 크롬이 보고 HS로 들어가야하는데 H로 들어간다 싶으면 다 막는다.
      4. 결국은 해당하는 DNS에서 찾아서 들어간다.
    2. 크롬이 파싱한다.
  2. DNS(Domain Name Server)
    1. ip를 알아야 하니까. DNS를 조회함
    2. ROOT 도메인부터 쭉 내려간다.
    3. 서버의 자원은 너무 소중하기 때문에 클라이언트 쪽에서 모두 받는다. 그래서 DNS에 가기 전에 크롬에서 그 페이지가 캐시되어있는지 확인하고 DNS로 간다.
    4. Check local Hosts File
      1. localhost같이 목록이 있다. 근데 여기에 없으면 최상위 도메인 서버에 간다. DNS까지 가면 크롬에 캐시되고 host에도 추가됨.
  3. ARP(Address Resolution Protocol)
    1. MAC 주소를 알기위해서 ARP라는 프로토콜을 던지게 된다.
    2. 타겟에 해당하는 IP가 어딘지에 해당하는 컴퓨터를 찾아간다.
    3. LAN으로 구성되어 있으면 ARP 프로토콜이 닿을 수 있는 범위다.
    4. TTL vs Hop(Q) -> ipv4로 넘어가는 게 TTL(10초안에 이 패킷이 안들어오면 버릴게), Hop(홉도 넘으면 버리는 건데 마찬가지인데 얘는 노드 기준같이 거리 느낌 )은 ipv6로 넘어가는 것.
      1. ARP Request를 서버로 날린다.
      2. 라우팅 테이블을 찾은 다음에 게이트웨이를 지난다. 다음에 어디까지 갈 수 있는가…한다. 마지막으로 서버로 도착하면 return 된다.
      3. 원래 던져줄 때 라우트 기준인데 허브같은 경우 ARP Request가 broadcast로 던져준다.(별)
  4. TCP or UDP를 통해 소켓을 연다
  5. 인터넷 계층인 IP를 거친다.
  6. 3-way handshake(TCP)
    1. 야 내가 이거 보내줄게
    2. 에크까지 보내면 이제 보낸다.
    3. 진짜 보냄.
  7. Request & Response
  8. DOM parsing - 그리기
  9. 4-way handshake(TCP)
  10. 이 정도까지가 면접까지 괜찮게 말할 수 있음. but depth로 물어봄. 절망편 - 두 번째 뎁스
  11. GET vs POST (별): get 방식은 서버의 상태를 조회하는 것. body가 없어서 매우 빠르다. 캐싱이 될 수 있어서 같은 요청에 있어서 더 빠르다. post는 서버의 상태를 바꾸는 것. 수행을 해야한다.
  12. URL vs URI(Q) : URL은 Location. URI는 Information. a 태그 같은 걸 쓸 때 “./a.html/”로 a.html의 루트에 해당하는 걸 가져온다. 쿼리들. 파라미터를 던지는 게 URI. 쿼리를 할 수 있도록
  13. REST와 RESTful의 개념(별)
    1. 쿼리를 날릴 때 규칙들이 있다. URL이 길이가 한정되어있으니 귀하게 쓰겠다~
  14. HTTP 헤더에서 connection: keep-alive(아주 중요), Host, CORS도 알아야한다.
  15. CORS(별별) -> 무조건 알아야 한다. 웹 정책. 지금 내가 요청하는 얘가 Origin 서버와 동일한지. 값을 제대로 받을 수 있는 지 판별해준다. origin이 무조건 같아야 한다.
    1. 이미지를 두 개 받을 때…? 하나는 되고 하나는 안 될 때. 안 된 얘는 그 되는 얘의 서버의 허락을 맡아야 한다.
  16. OSI 7 레이어(별) -> ICMP, TELNET,FTP + @가 어느 계층이다.
  17. Target과 TCP 통신을 통해 Socket을 연다.(별)
    1. socket.listen();같은 건 운영체제의 것이다. 자바가 그걸 쓰기 위해서 운영체제가 시스템 콜을 해주는 것. TCP Socket stream을 요청한다. 면접에서 시스템 콜이 일어나는 것에 대해서 물어본다. 운영체제에서 커널모드로 들어가서 소켓을 만들고
    2. 3 handshaking을 할 때 TCP 세그먼트가 만들어지는 OSI 4단계로 전달된다. 여기서 체크섬등… 그런 일이 벌어진다.
  18. TCP vs UDP(별)
    1. 유튜브는 왜 TCP를 쓸까?(라인 면접)
      1. 결국 저장된 동영상의 데이터를 가져오는 것. 구글디벨로퍼에 가면 알 수 있다. 운반을 하는 걸 TCP로 한다.
      2. UDP는 브루트포스방식. 너무 막무가내라 서비스 자체를 막는 기업이 있기도 하다.
  19. Slow start, Reno, WindowSize(별별별별별)
    1. WindowSize
    2. html 한 페이지를 찾아와야 하는데 너무 크다면 중간까지만 짤라서 보낸다. 어느 div태그겠지? 2배씩 사이즈를 늘려준다. 그러다가 서버측에서 안 올려도 된다는 임계치가 있다. 그 이후로는 2배가 아니라 1칸씩 올린다. 절반의 절반씩 하기도??
    3. 2배씩 키우는 걸 slow start. 하나씩 조금씩 커가는게 ??
    4. 이것을 TCP 혼잡 제어라고 한다. (리노 알고리즘)
  20. 이제 쪼개는 얘가 인터넷계층
  21. 데이터링크 계층 프레임…
  22. 광섬유로 0101하며 데이터를 보내줌.
  23. 3 way Handshake(별별)
    1. 초기 Sequence Nubmer가 패킷단위가 순서가 있는데 500 501 502 초기 넘버가 랜덤이다. 왜 그럴까?(Q)
      1. TCP가 순차적으로 오는데 0번에만 하면 0번에 엄청 부하가 온다. 해커들이 0번부터 시작하는 걸 아니까 보안 이슈도 있다.
    2. 왜 3 way를 할까?(Q)
      1. 서버한테도 진짜 해줬는지 알기 위해서
  24. HTTP vs HTTPS
    1. HTTP는 패킷단위로 움직이다. 통으로 감싸면
    2. HTTP는 그냥 평문으로 날라가는 거 HTTPS는 암호화해서 래핑해서 보내는 것. 소켓레이어 위에서 암호화된 채로 간다.
  25. soul0티스토리. 만화로 설명되어있다.
  26. HTTP 서버가 요청을 확인하고 반환한다.
  27. WAS랑 웹 서버는 다르다.
  28. 상태 메세지와 데이터를 받는다.(Response)
  29. HTTP1 vs HTTP2(별)
    1. 3핸드 쉐이킹을 할 때 딜레이가 생긴다.
    2. 그래서 keep-alive라는 걸 헤더에 보내줬다. 이것도 느려서
    3. 파이프라이닝 리퀘스트를 다 보낸다. 그러나 정적인 데이터 하나가 너무 느리다면 블락된다.
    4. 하나보내고 하나받고를 벗어날 수 없다. 왜냐면 response, request이기 때문에
    5. 그러나 H2는 프레임단위로 데이터를 받는다. 통로 하나 받아놓고 왔다갔다한다.
  30. 쿠키는 클라이언트, 세션은 서버
  31. CDN도 중요하다
  32. 이미지 여러 개를 하나로 퉁쳐서 큰거 하나를 받아서 3 WAY HANDShaking을 한다. 그냥 좌표값으로만 받아서. 그 이미지를 선택하는 것.
  33. DOM 트리에서 모두 다 조합한다. img태그에서 alt=”” 속성을 무조건 해줘야 한다.(별) 이거는 법 조항이다. 웹 접근성 !!
  34. tab도 왼쪽 맨 위부터 오른쪽으로 쭉 가야된다. 이게 법.
  35. 크롬은 탭 하나당 다 하나의 프로세스다. 그래서 램을 많이 잡아먹는다.
  36. BOM을 관리하는 게 브라우저 프로세스
  37. 프로세스와 스레드들의 차이 프로세스 단위로 하는 것이 더 좋은 아키텍쳐다. iframe도 다 프로세스 단위.
  38. virtual dom 등등…
  39. shadow tree를 사용하면 더 빨리 렌더링할 수 있다.
  40. 4 way handshake로 연결을 해제한다. 2개의 ack를 날리면서 2개의 FIN도 날린다.(별별)
    1. 얘네들을 소중히 여겨야 한다. 얘를 제대로 알아야 실무자.
  41. 여기까지가 웹이 뜨는 과정
  42. ETag는 캐싱이 됐냐 안 됐냐…

도메인, 포트포워딩, 호스팅

IP, 도메인

cmd에서 ping 알고싶은 인터넷 주소를 치면 그에 해당하는 IP주소가 나온다. (예를들어 ping www.naver.com)

웹사이트에 접속하는 방법은 2가지이다. 도메인(www.naver.com) 또는 IP주소(202.179.177.22)

사실 IP를 통해서만 접속할 수 있지만 도메인으로 가능한 것은 IP가 DNS서버를 경유해서 가능한 것이다.

자신의 IP주소를 알았다면 실제로 웹 주소창에 자신의 IP/php/index.php를 해서 만들었던 페이지에 들어갈 수도 있는데 이게 상황에 따라 다르다. 공인 IP는 가능하고 사설 IP는 되지 않는다.

IP는 0.0.0.0 ~ 255.255.255.255의 경우의 수로 42억개의 IP를 만들 수 있다.

42억개로 충분해 보이지만 사물인터넷. 서버, 인터넷 등등으로 IP주소가 부족하다.

이 부족함을 해결하기위해 두 가지 방법이 있는데 첫 번째는 IPv6이다. IPv6는 2^128개로 아주 많다. 그러나 기존 체계가 있기 때문에 현재는 동시에 사용되고 있다고 한다.

2번째 방법도 있는데 공유기다. 공유기란 뭘 까? 당신의 집, 컴퓨터 아래에 있는 네모난 기기가 공유기이다. 그렇다면 공유기가 왜 생겨 났을까? 인터넷에 접속하려면 모든 통신 케이블을 모든 컴퓨터에 하나씩 LAN선을 연결해야 된다. 만약 집에 컴퓨터가 많다면? 컴퓨터 하나하나마다 다 연결해야 한다. 하지만 이런 식으로 연결하게 되면 비용이 많이 들게 되고 불편하다. 경제적인 부담을 줄이기 위해 공유기가 탄생했다.(직접 연결한 것이 사설IP , 사설IP를 이용하면 아까 자기IP를 했을 때 성공한다)

그 각각의 LAN선을 공유기에 연결하고 사용하고 있는 하나의 통신사 케이블(WAN)을 공유기에 연결한다. 그러면 모두 인터넷을 쓸 수 있는 것이다. 여기서 무선으로 통신하는 방식을 무선 공유기(WIFI)라고 한다. 여기서 공유기도 자신의 IP가 있어 개인 컴퓨터의 IP가 아니고 연결 되어있는 공유기의 IP이다. 그래서 아까 페이지에 연결되지 못한 사람들은 우리가 만들었던 페이지가 공유기한테만 가는 것이다. 실질적으로 컴퓨터까지는 연결이 안 되는 것!(이게 바로 공인IP)

포트 포워딩

그렇다면 연결은 못하는 걸까? 아니다. 가능하다. 포트 포워딩으로 가능하다. 포트는 항구다. 정착지라고 보면 된다. 포트는 웹 브라우저에서 보이지 않는데 이유는 http가 사라지는 이유와 비슷하다. 이것들을 사용할 것이 당연하기 때문이다. 222.109.62.43:80 여기서 포트인 80이 사라지는 것도 80이 있다고 간주하고 설정하는 것이기 때문에 자동으로 사라진다. 컴퓨터IP에는 약 6만5천개의 가상의 문이 있다. 그 많은 문, 포트 중에서 80번 포트의 문을 열고 들어가면 그 방 안에 웹 서버가 설치가 되어있는 것이다. 웹서버는 기본적으로 80번대 포트에 설치 되어있다. 맥은 어떤 이유에서 80번포트가 아니고 8080이다. 데이터베이스에서도 Mysql -uroot -p -h222.1099.62.43 -p3306 여기서 p는 3306번 포트라는 것이다. 여기에 mysql이 설치된 것이다.

사설IP가 해당되는 IP주소에 정보를 토스해줄 수 있는 것이 포트 포워딩이다.

공유기는 222.109.62.43:80인데 웹서버는 192.168.0.2:80에 설치가 되어있다. 공유기 설정에서 192.168.0.2:80에 토스해주겠다고 설정이 되어있다. 그래서 222.109.62.43:80로 정보를 보내오면 웹서버 192.168.0.2:80로 보내주는 것이다.

공유기 포트 포워딩을 하려면 공유기 설정에 들어가야한다. 통신사와 계약한 케이블을 WAN에 꽂는다 (공인IP를 부여 받은 것) LAN1에 케이블을 꼽는 건 사설IP라고 보면 된다. 대부분의 공유기는 192.168.0.1이다. 이 IP를 웹 브라우저에 치면 공유기가 뜬다. 안에 들어가면 설정이 나온다. 여기서 고급설정-NAT라우터 관리-포트 포워드 설정에서 당신의 사설 IP를 쓰면 된다. 이더넷 어댑터 이더넷, 무선 어댑터 부분에 IPv4 부분에 자기 IP가 다 나온다. 외부포트에 80 내부포트도 80으로 해서 추가를 누르면 된다.

호스팅

호스팅 사업자들은 IDC(Internet Data Center – 서버가 돌아가기에 최적의 조건(보안, 네트워크)를 갖춘 센터)가 있다. So, 호스팅은 사업자들이 서버의 운영을 대행해주는 것이다.

웹 호스팅 -> 웹 애플리케이션 운영을 위한 모든 것을 제공 (웹서버, 미들웨어, 데이터베이스 등등..)

장점 : 애플리케이션을 업로드하기만 하면 된다. 단점 : 웹 애플리케이션을 동작하는 용도로만 사용(운영체제 레벨에서 할 수 있는 게 없다.) 한 대의 컴퓨터에 서버를 공유하고 있기 때문에 어떤 사람이 대박이 나서 트래픽이 커지면 내 서버가 느려질 수 있다.

서버 호스팅 -> 서버 컴퓨터를 아예 제공한다. 웹서버, 미들웨어, 데이터베이스 등등 하나도 제공이 안 되어 있다

장점 : 모든 것을 내가 할 수 있어 자유도가 높다. 단점 : 직접 운영해야 한다.

클라우드 컴퓨팅 -> 이는 인프라의 질적/양적 발전으로 가치가 있다. 가상화, 종량제(쓰는 만큼 돈을 낸다.)의 의미가 크다.

가상화를 알기 전에 가상머신이란? 가상머신(VMWare, Virtual Box, Parallels)은 물리적인 컴퓨터는 아니지만 물리적인 컴퓨터처럼 작동한다. 우리는 컴퓨터에 운영체제를 설치한다. 그 운영체제에 가상머신이라는 소프트웨어를 설치한다. 기계처럼 동작하는 가상머신. 그 위에 다시 운영체제를 설치한다. 여러 개의 컴퓨터가 있는 것 같은… 이것이 바로 가상화이다!

업체는 엄청나게 많은 컴퓨터를 가지고 있다. 우리는 업체에 필요한 만큼 컴퓨터를 임대할 수 있다. 메모리가 아주 적은 컴퓨터나 모아서 강력한 컴퓨터를 만들 수도 있다. 일반적인 컴퓨터로는 오래 걸리는 일을 강력한 컴퓨터로는 얼마 안 걸리니 얼마나 효율성이 좋다! 시간이 더 비싼 자원이니 사람들은 강력한 컴퓨터를 구매한다. 클라우드를 이용하면 컴퓨터를 다시 되팔 일도 없이 돌려주면 되는 것이다.

실제로 컴퓨터를 구매해서 서버를 했을 때는 이용자와 트래픽이 예측 불가이기 때문에 낭비도 되고 서비스를 제대로 운영하기 힘들지만 클라우드 서비스를 이용하면 편하다.

직접 운영 -> 확장성이나 보안에서 다 잘할 수 있어야한다. 그리고 운영체제, 플랫폼, 소프트웨어까지 깔아야 하니까.

클라우드 컴퓨팅의 종류

IAAS(infrastructure as a service) -> 운영체제만 지원하는 서버 호스팅

PAAS(platform as a service) -> 운영체제와 플랫폼을 지원하는 웹 호스팅

SAAS(software as a service) -> 모든 것을 사업자가 제공하는 것 (컨텐츠를 업로드해서 이용 거의 모든 서비스다) 거의 모든 서비스가 SAAS이다.

Repeater(리피터)

  • OSI 물리 계층에서 동작한다.
  • LAN에서 흐르는 신호를 증폭, 복사, 재생하는 장치
  • 두 개의 케이블을 하나로 연결해서 연장시켜준다.
  • 데이터가 전송되는 동안 감쇄되는 현상을 막아준다.
  • 그러나 브릿지나 라우터 등 리피터의 기능을 충족하는 장비가 나오고 있어 최근에는 쓰이지 않는다.

Bridge(브릿지, 브리지)

  • OSI 데이터링크 계층에서 동작
  • LAN을 연결해서 확장시켜준다.
  • 네트워크를 분할해 트래픽을 경감시켜준다.
  • 최근에는 라우터가 브릿지의 기능을 대신하고 있다.

Router(라우터)

  • OSI 네트워크 계층에서 동작
  • 네트워크들을 연결시켜준다
  • 패킷을 받고 다른 포트로 전송
  • 패킷을 전송할 때 경로를 자동으로 배정해주고 제어함. 동적으로 라우팅 테이블을 만들어주기도 함
  • 링크 중 하나가 고장나면 우회 경로를 구성시켜준다
  • 트래픽 량을 고루 분산시켜준다.

MAC 주소

  • OSI 데이터 링크 계층의 일부
  • 이더넷 기반 기기에 모두 할당되어 있는 고유한 ID
  • 랜 카드, 와이파이 모듈, 인터넷 전화 등 모두 할당되어있다.
  • 48비트로 구성되어 있어 IPv4에 비해 아직 여유롭다.(총 281조 개의 다른 ID 존재)
  • 한 번 부여된 MAC은 바뀌지 않는다.
  • 예를 들면, 나의 주민등록번호같은 느낌

IP 주소

  • IPv4는 이미 다 할당돼서 없다.
  • 공인 IP 주소를 할당받기 위해서는 비용을 지불해야 되는데, 그 비용이 비싸다.
  • 그래서 사설 IP 주소가 생겼다.
  • 공인 IP 주소와 사설 IP 주소는 다르다.
    • 공인 IP 주소
      • 세계에서 유일한 주소
      • 실제 다른 컴퓨터와 통신할 때 쓰는 IP다.
      • IP주소를 관리하는 기관에 사용권을 요청해서 할당받아야지 사용할 수 있다.
    • 사설 IP 주소
      • 사설 IP는 하나의 네트워크 안에서 유일하다.
      • 공인 IP를 가지고 있으면 내부든 외부든 해당 IP를 찾을 수 있지만 사설 IP는 내부에서만 찾을 수 있다.
      • 예를 들어, 집 주소가 공인 IP, 안방, 거실, 화장실 등이 사설 IP라고 보면 된다.
      • 사설 IP는 같은 사설망 안에서 IP가 중복되면 안 되지만 다른 사설망끼리는 IP가 중복돼도 괜찮다.
      • 공유기를 쓰고 있을 때 컴퓨터 내부에서 볼 수 있는 건 사설 IP이다. 그렇기 때문에 공인 IP를 확인하려면 따로 확인해야 한다.

출처