프로토콜 스택이란? 

OS에 내장된 네트워크 제어용 소프트웨어

프로토콜 스택 구성

  • TCP - 커넥션 사용, 데이터 송수신 담당
  • UDP - 커넥션 사용하지 않음, 데이터 송수신 담당(짧은 양을 사용시) 
  • IP - 패킷 운반, 경로 설정, ICMP(오류 통지, 제어용 메시지 통지)와 ARP(MAC주소 찾을때)라는 프로토콜을 다룸

IP주소를 DNS를 통해 알아냈으면 이제 액세스 대상 웹서버에 메시지를 송신하도록 OS 내부에 있는 프로토콜 스택에 의뢰합니다.

웹서버에 보내는 HTTP의 메시지는 디지털 데이터이므로 디지털 데이터를 송신하도록 의뢰한다고 해도 좋습니다.

IP주소를 조회할 떄와 같이 소켓 라이브러리에 들어있는 프로그램 부품을 이용하는데, IP주소를 조회할 때처럼 프로그램 부품을 하나씩 호출하고 끝나진 않는다. 복수의 부품을 결정된 순번대로 호출하게 돼서 조금 복잡할 수 있다. * 소켓은 서버와 클라이언트가 데이터를 송수신하는데 연결되는 파이프의 양끝(출입구)을 소켓이라고 부른다.

데이터 송수신 동작 순서

  1. 소켓을 만든다.
  2. 서버측의 소켓에 파이프를 연결한다.(연결시에 포트번호가 필요하다)
    • IP주소 : 전화번호
    • 포트번호: 소켓지정(홍길동씨 계십니까?)  (포트번호는 중간과정이라고 보면된다.)
  3. 데이터를 송수신한다.
  4. 파이프를 분리하고 소켓을 말소한다(연결 끊기)

포트번호는 종류에 따라 미리 결정된 값을 사용한다는 규칙이 있습니다. 

  • 웹: 80번
  • 메일: 25번

'IT 스터디 > 네트워크' 카테고리의 다른 글

기본적으로 알면 도움이 되는 포트 번호  (0) 2022.10.17
프로토콜 스택의 구성  (0) 2021.08.18
IP주소의 기본  (0) 2021.08.18
HTTP 리퀘스트 메시지 작성  (0) 2021.08.17
네트워크 공부 시작  (0) 2021.08.16

인터넷이나 사내 LAN은 TCP/IP의 개념에 기초하여 만들어졌으므로 TCP/IP의 개념부터 알아보자.

TCP/IP란?

서브넷이라는 작은 네트워크를 라우터로 접속하여 전체 네트워크가 만들어진다고 볼 수 있다.

이것의 한개의 단위는 서브넷이고, 라우터에서 연결하면 네트워크 전체가 완성된다.

집 주소로 따지면 ~~동은 서브넷이고, 번지에 해당하는 번호를 컴퓨터에 할당한 것이네트워크 주소라고 한다.

이 동에 해당하는 번호를 네트워크 번호, 번지에 해당하는 번호를 호스트 번호라고 한다.

네트워크번호와 호스트번호를 합쳐서 IP주소라고 한다.

송신측이 메시지를 보낼때는 서브넷 안에있는 허브가 운반하고, 가장 가까운 라우터까지 도착한다.

그리고 라우터가 메시지를 보낸 상대를 확인하여 다음 라우터를 판단하고

그 다음 라우터의 서브넷의허브로 보내고를 반복합니다. 이것이 TCP/IP의 기본적인 개념입니다.

IP주소의 구조

IP주소의 규칙에서는 네트워크 번호와 호스트 번호의 두 가지를 합쳐서 32비트로 되어있다.

11111111.11111111.11111111.    00000000   

                 네트워크 번호                 호스트번호

IP주소의 호스트 번호

모두 0 : 서브넷 자체를 나타냄

모두 1: 서브넷에 있는 기기 전체에 패킷을 보내는 '브로드 캐스트'를 나타냄

DNS란?

서버명과 IP 주소를 대응시키기 위해 사용하는것

서버명을 입력하고 IP주소값을 얻는 과정

  1. 서버명 입력
  2. 리졸버 호출(리졸버는 소켓에 있는 IP주소값을 호출하는 프로그램)
  3. OS내부에 프로토콜 스택을 호출하여 실행 의뢰(리졸버는 송수신 기능이 없기 때문)
  4. LAN어댑터를 통해 메시지가 DNS서버를 향해 송신
  5. 답이 발견되면 클라이언트에게 반송
  6. 프로토콜 스택을 경유하여 리졸버에 건네져서 리졸버가 내용을 해독한 후
  7. 애플리케이션에 IP주소 제공

 

유저가 URL을 작성 (url은 보통 http://로 시작하지만 ftp:, file:, 기능의 따라 다양함)

브라우저가 웹서버에 보내는 리퀘스트의 메시지를 작성하기 위해 URL을 해독

http://www.example.co.kr/dir1/fil1.html

  • http: - 데이터 출처에 엑세스 하는 방법, 즉 프로토콜을 기록
  • //  - 나중에 이어지는 문자열이 서버의 이름임을 나타냄
  • www.example.co.kr  - 웹 서버명
  • / - 디렉토리명
  • dir1/file.html - 경로명

끝이 /로 끝나는 경우: 파일명을 생략한 경우 기본접속값이 존재한다. (index.html 등)

 

네트워크 공부 이유 : 백엔드 개발자 공부를 하면서 프로그램을 서비스하려면 네트워크 지식은 필수라고 생각했다. 이외에도 공부하면서 네트워크 관련 언급이 계속 나오기 때문에 더 좋은 개발자가 되기 위해서 지나칠 수가 없었다.

공부 교재 : 우선 시중에 나와있는 네트워크 책 중에 "성공과 실패를 결정하는 1%의 네트워크 원리"라는 책이 기본기를  잡기 가장 좋다고 판단하여 이 책을 구매하였다.

얻고 싶은 것: "유저가 브라우저에 URL을 입력한 후 원했던 화면이 보일 때까지 어떤 일이 벌어지는가"에 대한 확실한 이해와 설명을 할 수 있는 수준이 되길 바란다.

교재 링크 : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=243233851 (역시나 내돈내산)

+ Recent posts