Network

    서버에서 연결을 끊어 소켓을 말소한다. - [Ch 02. TCP/IP의 데이터를 전기 신호로 만들어 보낸다.]

    지금까지 '소켓 작성, 서버에 접속, 데이터 송수신' 과정을 알아보았다. 마지막으로 '연결 끊기'를 살펴보면서 데이터 송·수신에 관한 일련의 움직임을 마무리해보자. 📙 1. 데이터 보내기를 완료했을 때 연결을 끊는다. 데이터 송·수신을 종료하는 것은 애플리케이션이 송신해야 하는 데이터를 전부 송신 완료했다고 판단했을 때다. 송신을 완료한 측이 연결 끊기 단계로 들어가는데, 어디에서 데이터 송·수신 동작이 끝나는지는 애플리케이션에 따라 다르다. 서버 측에서 연결 끊기 단계에 들어가는 것으로 간주한다면 그 과정은 아래와 같다. 서버 측의 애플리케이션이 먼저 Socket 라이브러리의 close를 호출한다. 서버 측의 프로토콜 스택이 TCP 헤더를 만들고, 여기에 연결 끊기 정보를 나타내는 FIN 비트를 1로 ..

    데이터를 송·수신한다. - [Ch 02. TCP/IP의 데이터를 전기 신호로 만들어 보낸다.]

    이전 글을 통해 서버에 접속하는 방법을 알아보았다. 이번에는 서버에 접속을 완료하고 connect에서 애플리케이션에 제어가 되돌아온 후의 데이터 송·수신 동작을 알아보도록 하자. 📙 1. 프로토콜 스택에 HTTP 리퀘스트 메시지를 넘긴다 첫 번째 동작은 애플리케이션이 write를 호출하여 송신 데이터를 프로토콜 스택에 건네주는 것이다. 프로토콜 스택은 데이터를 곧바로 송신하는 것이 아니라 일단 자체의 내부에 있는 송신용 버퍼 메모리 영역에 저장하고, 애플리케이션이 다음 데이터를 건네주기를 기다린다. 만약 받은 데이터를 곧바로 보낸다면 작은 패킷을 많이 보낼 수 있다. 하지만, 이렇게 한다면 네트워크의 이용 효율이 저하되므로 어느 정도 데이터를 저장하고 나서 송·수신 동작을 한다. 그렇다면 어느 정도 저장..

    소켓을 작성한다. - [Ch 02. TCP/IP의 데이터를 전기 신호로 만들어 보낸다.]

    이전 장(Ch 01. 웹 브라우저가 메시지를 만든다.)에서는 아래의 내용을 살펴보았다. URL을 해독하고, HTTP 리퀘스트 메시지를 만들고, 메시지를 송신하도록 OS에 의뢰한다. 이번 장(Ch 02. TCP/IP의 데이터를 전기 신호로 만들어 보낸다.)에서는 OS에 내장된 프로토콜 스택에 어떻게 송신을 의뢰하는지에 대해서 알아보자. 이전 장에서 알아본 메시지 송신 과정을 프로토콜 스택 내부의 움직임을 통해 살펴볼 것이다. 데이터 송·수신 동작은 아래의 4단계가 있다. 소켓 작성 단계 접속 단계 송·수신 단계 연결 끊기 단계 이번 글에서는 1단계인 '소켓 작성 단계'에 대해서 자세히 알아보자. 📙 1. 프로토콜 스택의 내부 구성 프로토콜 스택의 내부는 그림과 같이 역할이 서로 다른 몇 부분으로 나누어져 ..

    프로토콜 스택에 메시지 송신을 의뢰한다. - [Ch 01. 웹 브라우저가 메시지를 만든다]

    이전 과정을 통해 IP 주소를 얻었다. 이번 글에서는 데이터의 송신과 수신이 어떻게 동작하는지 알아보고자 한다. 📙 1. 데이터 송·수신 동작의 개요 IP 주소를 이용하여 액세스 대상 웹 서버에 메시지를 송신하기 위해 OS의 내부에 있는 프로토콜 스택에 의뢰한다. 데이터 송·수신 동작도 DNS 서버에 IP 주소를 조회할 때처럼 Socket 라이브러리에 들어있는 프로그램 부품을 이용하는데, IP 주소를 조회할 때처럼 프로그램 부품을 하나씩 호출하고 끝나는 게 아니라 복수의 부품을 결정된 순번대로 호출한다. Socket 라이브러리를 이용한 데이터 송·수신 동작은 위와 같다. 데이터를 송·수신하는 컴퓨터 사이에 데이터의 통로(파이프) 같은 것이 있고 파이프의 양 끝에 데이터의 출입구인 소켓이 있다. 그리고 아..

    전 세계의 DNS 서버가 연대한다. - [Ch 01. 웹 브라우저가 메시지를 만든다]

    이전까지 리졸버와 DNS 서버의 통신 과정을 살펴보았다. 이번에는 DNS 서버의 동작을 살펴보도록 하자. 📙 1. DNS 서버의 기본 동작 DNS 서버의 기본 동작은 '클라이언트에서 조회 메시지를 받고 조회의 내용에 응답하는 형태로 정보를 회답하는 일'이다. 조회 메시지에는 다음의 3가지 정보가 포함되어 있다. 이름 서버나 메일 배송 목적지(메일 주소에서 @ 뒷부분의 이름)와 같은 이름 클래스 인터넷 네트워크를 나타내는 'IN'이라는 클래스 DNS의 구조를 고안했을 때 인터넷 이외에도 네트워크에서의 이용까지 검토하여 이것을 식별하기 위해 클래스라는 정보를 준비했다. 하지만 지금은 인터넷 이외의 네트워크는 소멸되어서 항상 IN이라는 값을 가진다. 타입 이름에 어떤 타입(종류)의 정보가 지원되는지를 나타낸다..

    웹 서버의 IP주소를 DNS 서버에 조회한다. - [Ch 01. 웹 브라우저가 메시지를 만든다]

    HTTP의 메시지를 만들면 이것을 OS에 의뢰하여 액세스 대상의 웹 서버에게 송신한다. 브라우저는 URL을 해독하거나 HTTP 메시지를 만들지만, 메시지를 네트워크에 송출하는 기능이 없기 때문에 OS에 의뢰하여 송신하는 것이다. OS에 송신을 의뢰할 때는 도메인명이 아니라 IP 주소로 메시지를 받을 상대를 지정해야 한다. 그래서 URL 안에 쓰여있는 서버의 도메인명으로 IP 주소를 조사해야 한다. 그래서 이번 글에서는 도메인명에서 IP 주소를 조사하는 방법을 알아보고자 한다. 📙 1. IP 주소의 기본 🚩 1. 기본 동작 우선, TCP/IP 개념과 함께 IP 주소에 대해서 알아보자. TCP/IP는 서브넷이라는 작은 네트워크를 라우터로 접속하여 전체 네트워크가 만들어진다고 생각할 수 있다. 서브넷이란 허브..

    HTTP 리퀘스트 메시지를 작성한다. - [Ch 01. 웹 브라우저가 메시지를 만든다]

    📙 1. 탐험 여행은 URL 입력부터 시작한다. 네트워크의 출발점은 URL부터 시작한다. 브라우저는 웹 서버에 액세스 하는 클라이언트로 사용하는 경우가 많지만, 파일을 다운로드/업로드하는 FTP의 클라이언트 기능이나 메일의 클라인언트 기능도 가지고 있다. 그래서 웹 서버에 액세스 할 때는 http:, FTP 서버라면 ftp:라는 식으로 여러 종류의 URL이 있다. 즉, 브라우저는 몇 개의 클라이언트 기능을 겸비한 복합적인 클라이언트 소프트웨어라고 할 수 있다. 웹 서버나 FTP 서버에 액세스 하는 경우에는 서버의 도메인명이나 액세스 하는 파일의 경로 등을 URL에 포함시킨다. HTTP 프로토콜로 웹 서버에 액세스 하는 경우 http://{사용자명(생략가능)}:{패스워드(생략가능)}@{웹 서버의 도메인명}..

    제 1장. 웹과 네트워크의 기본에 대해 알아보자

    책(그림으로 배우는 Http&Network Basic)을 통해 HTTP와 NetWork에 대한 전체적인 큰 틀을 이해하고 그 내용들을 정리하고자 한다. 그렇기 때문에 추가적인 공부가 필요한 주제에 대해서는 다시 한번 자세히 블로깅을 하도록 하겠다. 📘 1. 기본용어 서버 리소스라고 불리는 파일 등의 정보를 저장 클라이언트 서버에 의뢰하는 웹 브라우저 HTTP(HyperText Transfer Protocol) 프로토콜 클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것 프로토콜(Protocol) 서로 다른 하드웨어와 운영체제 등을 가지고 서로 통신을 하기 위해 필요한 규칙 📘 2. TCP/IP 인터넷과 관련된 프로토콜들을 모은 것 TCP/IP는 '애플리케이션 계층', '트랜스포트 계층', '네트워크 ..