##본 포스팅은 '그림으로 배우는 Http & Network Basic - 우에노 센'을 읽고 쓴 요약/정리 글입니다.
웹의 시작
> 웹의 시작
멀리 떨어져있는 동료 연구자와 지식을 공유하기 위한 시스템으로 고안되었다.
최초로는 '하이퍼텍스트'에 의해 상호간 참조할 수 있는 WWW가 있다.
> WWW
World Wird Web
- 문서 기술 언어 : HTML(HyperText Markup Language)
- 문서 전송 프로토콜 : HTTP
- 문서의 주소를 지정하는 방법 : URL
당시 HTTP는 주로 텍스트를 전송하기 위한 프로토콜이었지만,
프로토콜 자체가 상당히 심플해서 여러 가지 응용 방법을 고려해 기능이 계속해서 추가되었다.
Http
인터넷을 포함하여 일반적으로 사용하고 있는 네트워크는 TCP/IP라는 프로토콜에서 움직이고 있다.
Http는 그 중 하나이다.
컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로만 통신을 해야하며, 이를 위해 규칙이 필요한데
이때의 규칙이 바로 "프로토콜"을 가리킨다.
프로노콜에는 여러가지가 있으며,
인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP라고 부른다.
TCP/IP에서 중요한 개념 중 하나가 계층이다.
TCP/IP는 아래와 같이 총 4개의 계층으로 나뉜다.
> 계층화의 이유
- 인터넷의 하나의 프로토콜로 되어있다면 어디선가 사양이 변경되면 전체를 바꿔야하지만, 계층화가 되어있으면 사양이 변경된 층만 바꾸면 된다.
- 자신이 담당한 계층만 고려하면 되기에 설계가 편해진다.
TCP/IP 4 Layer
1. Application Layer
- FTP / DNS / Http
- 유저에게 제공되는 어플리케이션에서 사용하는 통신의 움직임을 결정한다.
2. Transport Layer
- TCP / UDP
- 어플리케이션 계층에 네트워크로 접속되어있는 2대의 컴퓨터 사이의 데이터 흐름을 제공한다.
3. Network Layer(Internet Layer)
- IP
- 네트워크 상에서 패킷의 이동을 다룬다.
- 여러가지 경로 중 어떤 길로 갈지 결정하는 것을 담당한다.
4. Link Layer
- 디바이스 드라이버 / 네트워크 인터페이스 카드
- 네트워크에 접속하는 하드웨어적인 면을 다룬다.
TCP/IP 통신의 흐름
TCP/IP로 통신을 할 때 계층을 순서대로 거쳐 상대와 통신을 한다.
> 통신 과정
1) 송신측 클라이언트의 어플리케이션 계층(http)에서 "어느 웹 페이지를 보고 싶다'고 http 리퀘스트를 지시한다.
2) 트랜스포트 계층에서는 어플리케이션 계층에서 받은 데이터(http 메시지)를 통신하기 쉽게 조각내어 안내 번호와 포트 번호를 붙여 네트워크 층에게 전달한다.
3) 네트워크 층에서는 수신지 MAC 주소를 추가하여 링크 층에게 전달한다.
4) 수신측 서버는 링크 계층에서 데이터를 받아 순서대로 위의 계층에게 전달한다.
각 계층을 거칠 때는 "헤더"라 불려지는 계층별 중요 정보를 추가한다.
반대로 수신측에서는 이 "헤더"를 층별로 삭제한다.
이 과정을 "캡슐화"라고 한다.
중요 프로토콜
TCP/IP 중에서 HTTP와 관계가 깊은 프로토콜은 다음과 같다.
1. IP
- 네트워크 층
- IP주소와 MAC주소를 사용하여 개개의 패킷을 상대방에게 전달하는 것이 역할이다.
- 여러 대의 컴퓨터와 네트워크 기기를 중계하여 패킷을 전달하는데, 이 때 ARP라는 프로토콜을 사용하여 IP주소를 바탕으로 MAC 주소를 조사하여, 패킷을 전달한다.
- "라우팅" : 목적지까지의 중계는 컴퓨터와 라우터 등의 네트워크 기기가 하며, 대략적인 목적지만을 알고 있다
2. TCP
- 트랜스포트 층
- 신뢰성 있는 바이트 스트림 서비스를 제공하는 것과 정확하게 도착했는지 체크하는 것이 역할
- 바이트 스트림 서비스 : 용량이 큰 데이터를 보내기 쉽게 TCP 세그먼트라고 불리는 단위 패킷으로 작게 분해하는 것을 말한다.
- 확실하게 보낸다? : 패킷이 보내졌는지 여부를 상대에게 확인하는 "쓰리웨이 핸드셰이킹"을 사용하여, 아래와 같은 과정으로 통신을 진행한다.
- 송신측 : 최초 SYN 플래그로 상대방에게 접속 & 패킷 전송
- 수신측 : SYN/ACK 플래그로 송신측에 접속 & 패킷을 받았는지 확인
- 수신측 : 실제로 받는것이 완료가 되면 ACK 플래그를 송신측에 보냄
3. DNS
- 어플리케이션 층
- 도메인 이름에서 IP 주소를 조사하거나 반대로 IP 주소에서 도메인명을 조사하는 서비스를 제공한다.
URI와 URL
> URI
- 스키마를 나타내는 리소스를 식별하기 위한 식별자
- 리소스를 식별하기 위해 문자열 전반을 나타냄
> URL
- 리소스의 장소(네트워크 상의 위치)
- URI의 서브셋
> URI의 포맷
잘 몰랐던 것만 정리를 해보면,
- 스키마
리소스를 얻기 위해 사용하는 프로토콜을 지시
"data:", "javascript:" 등과 같이 데이터나 프로그램을 지정할 수도 있음