브라우저에서 서버로부터 응답을 받는 과정

개발을 하다 보면 API요청을 하는 일이 많이 있는데요. 브라우저에서 API 요청을 하고 서버로부터 응답을 받기 까지는 어떠한 과정을 거치게 될까요? 1. 사용자가 입력한 URL을 분석 URL(Uniform Resource Locator)은 인터넷에서 자원의 위치(주소)를 나타냅니다. 그리고 URL은 프로토콜, 도메인네임, 포트, 경로, 파라미터 등으로 구성됩니다. 만약 이 URL 문법에 맞지 않는다면, 기본 검색엔진으로 검색을 요청합니다. 2. URL을 IP 주소로 변환(DNS 조회) URL에는 도메인네임이 들어갑니다. 이 도메인네임을 DNS(Domain Name System) 서버에 요청하여 컴퓨터가 읽을 수 있는 IP 주소로 변환합니다. IP 주소를 바로 입력해도 됩니다만, IP 주소는 기억하기 어렵습니다 (도메인을 돈 주고 사는 이유) 3. 대상 서버와 TCP 소켓 연결 TCP 소켓 연결은 3 way handshake라는 과정을 통해 이루어집니다. - 1단계 SYN (synchronize sequence numbers 동기 시퀀스 넘버): 연결 요청 메시지 전송 - 2단계 SYN + ACK(Acknowledgement 답신): SYN 요청에 대해 서버에서 응답을 합니다.(수락 혹은 거절) - 3단계(ACK): 서버로부터의 응답을 확인하고 데이터전송을 시작할 안정적인 연결을 설정합니다. 참고로 HTTP3에서는 TCP의 3 way handshake를 없애고자 TCP가 아닌 UDP를 사용합니다. 4. 요청, 응답 및 브라우저 렌더링 드디어 연결이 확정되었습니다. 해당 페이지를 서버에 요청하고 서버는 이 요청에 대한 응답을 브라우저에게 전달합니다. HTML, CSS, JavaScript를 전달받은 브라우저는 구문 분석을 통해 파싱 -> 렌더링 트리 구성 -> 렌더링 트리 배치(레이아웃) -> 페인팅 등의 과정을 통해 사용자에게 화면을 보여줍니다. API 요청 시 브라우저에서 서버로부터의 응답을 아주 간략하게 4가지로 요약해 보았는데요. 실제로는, HTTP, HTTPS로 보낼지 판단하는 HSTS 목록 조회, 논리적 주소인 IP를 물리적 주소(MAC)으로 변경하는 ARP(Address Resolution Protocol)의 과정 등이 더 있습니다. 네트워크 지식은 모든 개발자에게 필요한 지식이기에 여유가 되신다면 틈틈이 공부하시는 것을 추천드립니다.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 1월 6일 오전 12:56

 • 

저장 373조회 7,258

댓글 0

    함께 읽은 게시물


    승부욕

    

    ... 더 보기

    앞으로의 코테는 설명을 주고 코드를 짜라고 하는 것이 아니라, 코드를 주고 설명을 하라는 것이 유효할 것이다.


    내 경우는 이미 그렇게 하고 있는데, 요구사항을 주고 개발을 요청. 결과물이 요구사항대로 개발이 잘 되었다면, 다음 단계로 제출한 코드를 리뷰하며 설명을 요청한다.


    ... 더 보기

     • 

    저장 2 • 조회 893


    AX 시대, 일잘러 되기, 시대가 원하는 리더의 역량

    ... 더 보기

     • 

    저장 1 • 조회 491


    🤏 백엔드 개발에 도움되는 학습 도서 📚

    많은 분들께서 긱뉴스에서 공개한 무료 학습 자료를 공유해주셨는데요, 저는 그중에서 백엔드 개발에 도움되는 도서는 어떤게 있을지 골라보았습니다. 제가 하고있는 업무와 연관이 있는 도서들을 골라본거라 모든 백엔드 개발자가 반드시 배워야 한다는 아니지만, 적어도 배워두면 써먹을 수 있다는 수준으로 이해해 주세요 🙏 ✔️ Java (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#java) Java 는 현재 매우 인기있는 백엔드 개발 언어입니다. 특히 대량의 트래픽을 대응하거나 다양한 솔루션과의 연계를 위해 많은 회사에서 Java 를 사용하고 있습니다. 점프 투 자바는 이런 Java 의 기초적인 내용을 학습하기 좋은 도서로 저도 많은 도움을 받았던 도서입니다. ✔️ Git (https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ko.md#git) 이건 사실 백... 더 보기

     • 

    댓글 8 • 저장 957 • 조회 26,323


    Do not solve it. Manage it Instead.

    직장 생활을 하다보면
    크고 작은 문제(Problem)들이

    ... 더 보기