책을 읽어보자/그림으로 배우는 HTTP & Network Basic

[우테코 권장도서] 그림으로 배우는 HTTP 어쩌구저쩌구 1장

강한 맷돼지 2023. 8. 6. 16:57

1.2.1 HTML 역사

최초 웹은 지식(문서)를 공유하기위한 시스템으로 출발하여 여러문서를 상호간 관련짓는 Hyper text에 의해 상호간 참조할수있는것이 키워드였다.

www를 구성하는 기술로 문서기술로는 SGML을 기반으로한 HTML,문서 전송 프로토콜로는 HTTP 문서 주소 지정방법으로는 URL 을 사용하였다.

www는 결국 처음에는 문서를 열람할수있는 웹브라우저 같은 클라이언트 어플리케이션이지만 현재는 일련의 시스템 자체를 www라고 칭한다.

1.2.2 HTML 역사

웹 브라우저 관련 역사가 나오는데 한번 쭉 보면 될것같다. 별 내용은 없고 HTML 표준이야기와 넷스케이프와 인터넷익스플로러 맞짱이야기 정도가 있다.

그리고 현재 파이어폭스 크롬 등등이 또 싸운다 이런이야기이다.

1.2.3 HTTP 역사

HTTP의 버전별 역사인데 HTTP는 현재도 1.1이 제일 많이 사용되는 버전으로 더럽게 안바뀐다고한다.

-> HTTP2.0 이 준비중이라고 한다. (최초 텍스트를 전송하기 위한 프로토콜이었지만프로토콜 자체가 심플해서 여러가지 응용을 통하여 기능이 추가되었다고 한다.)

1.3

인터넷을 포함한 일반적인 네트워크는 TCP/IP 라는 프로토콜을 이용한다고 한다 HTTP또한 그중 일부라고 한다.

 

1.3.1 TCP/IP 프로토콜이야기

컴퓨터와 네트워크 기기가 통신하려면 방법을 맞춰야하고 이게 프로토콜이다. -> 예를들어 상대를 어떻게 찾고,어떻게 이야기를 시작하고,어떠한 언어로하며,이야기를 종료할까 이런것들인데 말로 풀어놨지만 결국 그냥 네트워크 과정이다.

이런것들이 서로다른 하드웨어와 운영체제 사이에 일어나니 규칙이 필요하다. 이런 규칙이 프로토콜이다.

인터넷과 관련된 프로토콜을 모은것을 TCP/IP라고 한다고 한다. IP 프로토콜을 사용한 통신에서 사용디는 프로토콜을 통칭해서 TCP/IP 라고 한다.

1.3.2 계층 이야기

레이어 개념이 중요하라고 한다 -> 레이어드 아키텍쳐 우리가 생각하는것과 장점이 같다.

크게 어플리케이션 계층,트랜스포트 계층, 네트워크 계층, 링크 계층 이 있다고 하는데 더 세분화한 OSI7 계층이 유명하다.

어쩃든 인터페이스만 정해놓으면 각각 내부 구현은 자유로운것이 장점이라고 한다.

또한 본인의 역할을 다한다면 다른 계층의 일은 전혀 상관 안해도 되는것도 장점이다.

어플리케이션 계층

유저에게 제공되는 어플리케이션에서 사용하는 통신의 움직임을 결정한다고 한다.

FTP,DNS,HTTP 등의 예시가 있다.

트랜스포트 계층

애플리케이션 계층에 연결되어있는 2대의 컴퓨터 사이 데이터 흐름을 제공한다고 한다. 내부적으로 서로 다른성질을 가지고 있는 TCP,UDP 프로토콜을 사용한다고 한다.

네트워크 계층

네트워크 상에서 패킷의 이동을 다룬다고한다.(패킷: 전송하는 데이터의 최소단위) 어떤경로를 거쳬 상대의 컴퓨터로 패킷을 보낼지 결정하기도 한다고 한다.

인터넷이라면 여러 컴퓨터,네트워크 기기를 거쳐서 패킷이 이동하는데 그때 그 경로를 정하는것이 네트워크 계층이라고한다.

링크계층

네트워크의 하드웨어 적인 부분을 다룬다고 한다. 운영체제가 하드웨어를 제어하기 때문에 디바이스 드라이버랑 네트워크 인터페이스 카드 또한 포함한다고 한다.

케이블등 물리적인것도 여기 포함된다고 한다. 하드웨어 == 링크 계층이라고 생각하면 된다고 한다.

1.3.3 TCP/IP 통신의 흐름

통신을 할때 각각 클라이언트 쪽에서 계층을 순서대로 뚫고 내려가고 서버측에서는 역순으로 뚫고 올라온다.

그래서 각계층이 수행할수있는 행위를 하고 그에 맞춰 계층별 필요한 정보들을 헤더로 붙여서 다음 계층으로 전달하고

역순으로 서버로 뚫고 올라올떄는 계층을 지날때마다 헤더를 벗겨가며 진행한다(헤더를 벗기는게 필수이다.)

1.4 HTTP와 관계가 깊은 프로토콜은 IP/TCP/DNS

HTTP와 관계가 깊은 3개의 프로토콜을 순차적으로 살펴본다.

1.4.1 배송을 담당하는 IP

계층에서는 네트워크 계층에 해당되고 사실상 인터넷을 활용하는 모든 시스템이 IP를 사용하고있다고 한다.

IP와 IP주소를 혼동하는 경우가 있는데 둘은 다른것이라고 한다.(지금말하는 IP는 프로토콜)

IP의 역할은 쪼개져있는 개개의 패킷을 상대방에게 전달하는것이다.

이때 IP주소와 MAC 주소가 쓰인다.

IP주소: 각노드에 부여된주소, 변경가능하며 MAC 주소에 결부된다

MAC주소: 각 네트워크 카드에 할당된 고유주소 변경불가

통신을 ARP를 이용하여 MAC 주소에서 한다

같은 랜선내에 접속되어있지 않는이상 여러대의 컴퓨터와 네트워크 기기를 중계해서 통신하게 된다.

이렇게 중계하는 과정에서 다음으로 중계할 곳의 MAC 주소를 사용하여 목적지를 찾아간다.

이떄 ARP라는 프로토콜이 사용된다,

ARP는 수신지의 IP주소를 바탕으로 MAC 주소를 조사할수 있다고 한다.(너무 대략적으로 설명한다.)

그 누구도 인터넷 전체를 파악하고 있지는않다.

네트워크 == 택배 배송과 방식이 같다.

대략적인 위치를 기반으로 묶어서 이동하고 각자의 역할을 할뿐이다.

서울에서 경기도까지 화물이동하고 경기도에서 각 집배원이 집으로 뿌리는것처럼 결국 전체 흐름을 아는것은 아무것도 없다.

1.4.2 신뢰성을 담당하는 TCP

트랜스포트 계층에 해당한다.

신뢰성있는 바이트 스트림 서비스를 제공한다는데 한마디로 용량이큰 데이터를 TCP 세그먼트라는 패킷단위로 작게 분해하여 관리(바이트 스트림)하며 상대방에게 전송하는것(신뢰성)을 말한다.(정확하게 도착했는지 여부까지 확인한다)

그냥 한마디로 패킷으로 쪼개서 보낸다는거다.

상대에게 데이터를 확실하게 보내는 것이 일이다.

TCP는 확실하게 보내기위해 쓰리웨이 핸드셰이킹을 쓰는데 패킷을 보내고 땡이 아니라 보내고 확인도 하는것이다.

이떄 SYN,ACK라는 플래그를 사용한다는데 대략적으로 이야기하면

보내는쪽에서 SYN플래그로 최초에 패킷을쏘고 수신측에서는 SYN/ACK 플래그로 받은걸 다시 알린다. 그후 보낸쪽이 ACK플래그를 보내서 패킷이 정상적으로 갔다는 종결을 찎는다 이중 하나라도 안되면 다 초기화되고 같은 방법으로 다시 패킷을 쏜다.

즉 확실하게 받았는지 확인까지하는 친절 택배기사다.

1.5 이름 해결하는 DNS

DNS 이름만 들어도 감이온다. 도메인 네임 서버 설명이 필요한가 싶다. IP주소랑 이름을 매핑해서 보관하고 주는곳이다.

1.6 이후

URL,URI 그리고 이것이 의미하는것을 이야기하는데 사실상 교양이다 필요하면 가서 찾아보자