ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 성공과 실패를 결정하는 1%의 네트워크 원리 1장: 웹브라우저
    Web Dev/7. 네트워크 2021. 3. 23. 13:35
    728x90

    브라우저란 실로 어마어마한 놈이었다. 웹브라우저는 모든 메시지가 처음 시작하는 곳인데, 평화로워보이지만 웹브라우저는 메시지를 만들어내는 곳이다. 

     

    • URL 입력: 브라우저는 여러 프로토콜을 지원한다. 우리가 흔히 보는건 http, https뿐이지만 file, mailto도 지원하고 있다
      • 이중 http는 엑세스 대상이 웹서버인 것이다
      • 이를 해독해서 어디에 엑세스를 하는지 판별. 이때 URI를 이용하는데, 식별자라고 이해하면 된다
      • 이 URI와 method를 통해 웹서버에 요청을 보낸다
    • 요청을 보낼때 HTTP 리퀘스트 메시지를 만든다
      • 이것의 첫번째 행을 리퀘스트 라인이라고 하는데, 메소드로 시작하고, 얘를 통해 대강 무슨 리퀘스트인지 파악이 가능하다
      • 메시지 헤더: 여기에는 날짜, 클라이언트측이 취급하는 데이터 종류, 언어, 압축형식, 클라이언트나 서버의 소프트웨어 명칭과 버전, 데이터의 유효기간이나 최종 변경 일시 등 다수의 항목이 정해져있다. 
    • 응답은 웹서버에서 만들어서 보내준다. 
    • DNS
      • 요청을 보낼때는 IP 주소 기준이라 URI에 있는 도메인 명을 이용해서 DNS서버에서 IP주소를 읽어와야한다. 이건 브라우저가 하는것이 아니고 소켓의 'gethostbyname' 부품이 프로토콜 스택을 호출해서 실제 요청을 송신하고 ip를 읽어온다. 
      • dns는 계층 구조를 가지고 있다. 
        • 내 pc는 가장 가까운 dns서버의 주소를 가지고 있고, 이런 서버들에는 루트 도메인의 주소가 다 등록되어있다 . 루트도메인에 있는애들은 13개 정도밖에 안된다. 이때 요청이 'www.lab.request.com'이면 내 근처 DNS서버는 루트에 요청을 보내고, 얘는 'com'이 등록된 dns 서버 주소를 반환하고 이를 반복해서 'www.lab.request.com' 여기까지 도달해서 받아온다.
        • 이때 매번 이걸하면 난리가 나서 캐쉬를 해둔다. 
    • 소켓
      • 데이터를 송수신할때는 송수신하는 클라이언트와 서버를 파이프로 연결하는 동작이 필요한데,처리할때 필요한 데이터들이 관리되는 곳을 소켓이라고 한다. 클라이언트도 소켓을 가지고 있고, 서버도 소켓을 가지고 있따. 
      • 이 소켓은 누구랑 연결됬는지 뭐 이런 정보들이 저장되어잇다. 
      • 소켓은 소켓 라이브러리의 socket으로 생성되는데 디스크립터를 반환해준다. 이 디스크립터는 소켓의 주로를 가지고있다. 얘를 통해서 어떤 소켓에 접근하고 있는지를 기억하고 잇을수있다.
        • 디스크립터랑 포트번호의 차이점
          • 디스크립터는 클라이언트에서소켓을 만들었다면 클라이언트가 사용할때 접근하는것
          • 포트번호는 클라이언트가 서버에 접근할때 몇번 포트였는지 확인하는것으로 접속 상대의 소켓을 식별하기 위해 사용
    •  

    댓글

Designed by Tistory.