티스토리 뷰

CS지식

웹과 네트워크의 기본

망쏘 2023. 4. 28. 00:05

웹 브라우저

: 주소 입력란에 지정된 URL에 의지해서 웹 서버로부터 리소스라고 불리는 파일 등의 정보를 얻는 것

서버에 의뢰를 하는 웹 브라우저 등을 클라이언트라고 한다.
클라이언트에서 서버까지 일련의 흐름을 결정하는 것 = 웹에서 HTTP 이라고 불리는 프로토콜
→ 웹은 HTTP 라는 약속을 사용한 통신을 한다.


 네트워크의 기본, TCP/IP

인터넷을 포함하여 일반적으로 사용하고 있는 네트워크이다.
HTTP를 이해하기 위해서는 TCP/IP를 어느정도 이해해야 한다.

 

TCP/IP 는 프로토콜의 집합이다.

프로토콜이란? 서로 다른 하드웨어와 운영체제 등을 가지고 서로 통신하기 위해서 모든 요소에 필요한 규칙
→ TCP, IP, DNS, FTP, HTTP, UDP 등

✔️ 인터넷과 관련된 프로토콜을 모은 것 = TCP/IP

 

TCP/IP 의 계층(Layer)


각 계층은 계층이 연결되어 있는 부분만 결정되어 있어, 각 계층의 내부는 자유롭게 설계할 수 있다.
계층화가 되어 있는 경우 각 계층에 집중할 수 있다.

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

✔️ 트랜스포트 계층
애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공한다.
→TCP(Transmission Control Protocol), UDP(User Data Protocol)

✔️ 네트워크 계층 (혹은 인터넷 계층)
네트워크 상에서 패킷의 이동을 다룬다.
→ 패킷: 전송하는 데이터의 최소 단위
어떠한 경로를 거쳐 상대의 컴퓨터까지 패킷을 보낼지 결정한다.


✔️ 링크 계층 (혹은 데이터 링크 계층, 네트워크 인터페이스 계층)
네트워크에 접속하는 하드웨어적인 면을 다룬다.
→ 디바이스 드라이버, 네트워크 인터페이스 카드(NIC), 케이블과 같이 물리적으로 보이는 부분

 

TCP/IP 통신의 흐름


✔️ HTTP 통신 흐름
1. 송신측 클라이언트의 애플리케이션 계층(HTTP)에서 웹 페이지를 보고 싶다는 HTTP 리퀘스트를 지시한다.
2. 애플리케이션 계층에서 받은 데이터를 통신하기 쉽게 조각내어 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달한다.
3. 수신지 MAC 주소를 추가해서 링크 계층에 전달한다.
❗️ 네트워크를 통해 송신할 준비가 되었다.
4. 수신측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위의 계층으로 전달한다.
5. 애플리케이션 계층에 도달하게 되면 클라이언트가 발신했던 HTTP 리퀘스트 내용을 수신할 수 있다.

송신측에서 각 계층을 거칠 때는 반드시 헤더로 불려지는 해당 계층마다 해당 계층에 필요한 정보를 추가한다.
반대소 수신측에서는 각 계층을 거칠 때마다 반드시 해당 계층마다 사용한 헤더를 삭제한다.
❗️ 정보를 감싸는 것 = 캡슐화

 

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

✔️ IP (Internet Protocol)
네트워크 층에 해당한다.
IP 의 역할은 패킷을 상대방에게 전달하는 것이다.

IP 가 전달하는 여러 요소 중 중요한 요소
- IP 주소 : 각 노드에 부여된 주소, 변경이 가능하다.
- MAC 주소 : 각 네트워크 카드에 할당된 고유의 주소, 변경이 불가능하다.

IP 통신은 ARP 를 이용하여 MAC 주소에서 한다.

ARP (Address Resolution Protocol)
- 주소를 해결하기 위한 프로토콜 중 하나
- 수신지의 IP 주소를 바탕으로 MAC 주소를 조사할 수 있다.

 

✔️ TCP (Transfer Control Protocol)
트랜스포트 층에 해당한다.
신뢰성 있는 바이트 스트림 서비스를 제공한다.

바이트 스트림 서비스 : 용량이 큰 데이터를 보내기 쉽게 TCP 세그먼트라고 불리는 단위 패킷으로 작게 분해하여 관리하는 것
신뢰성 있는 서비스 : 상대방에게 보내는 서비스

TCP : 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 정확하게 도착했는지 확인하는 역할

3way handshaking
- 패킷을 보내고 보내졌는지 여부를 상대에게 확인하는 것
❗️ 통신의 신뢰성을 보증할 수 있다.

- SYN, ACK 라는 TCP 플래그를 사용한다.


1. 송신측에서 최초 SYN 플래그로 상대에게 접속함과 동시에 패킷을 보낸다.
2. 수신측에서 SYN/ACK 플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전한다.
3. 송신측이 ACK 플래그를 보내 패킷 교환이 완료됨을 전한다.

 

✔️ DNS (Domain Name System)
HTTP와 같이 응용 계층 시스템에서 도메인 이름과 IP 주소 이름 확인을 제공한다.
사용자는 IP 주소 대신 영어, 숫자 등으로 표기된 이름을 친숙하게 사용한다.
컴퓨터는 숫자를 나열하는 방법(IP 주소)을 선호한다.

도메인명에서 IP 주소를 조사하거나 반대로 IP 주소로부터 도메인명을 조사하는 서비스를 제공한다.

 

URI vs URL

✔️ URI
Uniform Resource Identifiers
스키마를 나타내는 리소스를 식별하기 위한 식별자

Uniform
통일된 서식을 결정하는 것
새로운 스키마(http:, ftp 등) 도입을 용이하게 한다.

Resource
리소스 = 식별 가능한 모든 것
복수의 집합도 리소스로 파악할 수 있다. (도큐먼트 파일, 이미지, 서비스 등)

Identifier
식별 가능한 것을 참조하는 오브젝트

✔️ URL
Uniform Resource Locator
웹 브라우저 등으로 웹 페이지를 표시하기 위해 입력하는 주소
리소스의 장소(네트워크 상의 위치)를 나타낸다.

URL은 URI의 서브셋이다.

URL 포맷

1. 필요한 정보 전체를 지정하는 완전 수식 절대 URI, URL
2. 브라우저 중의 기준 URI에서 상대적 위치를 지정하는 상대 URL

http://user:pass@www.example.com:80/dir/index.htm?uid=1#ch1

스키마 (http://) : 리소스를 얻기 위해 사용하는 프로토콜을 지시한다. 
자격정보 (user:pass) : 서버로부터 리소스를 취득하기 위해서는 자격정보가 필요하다. (옵션)
서버 주소 (www.example.com) : 완전 수식 절대URI에서는 서버 주소를 지정할 필요가 있다. (DNS, IPv4, IPv6)
서버 포트 (80) : 서버의 접속 대상이 되는 네트워크 포트 번호를 지정한다. (옵션, 생략 - 디폴트 포트)
계층적 파일 패스 (dir/index.htm) : 특정 리소스를 식별하기 위해서 서버 상의 파일 패스에 지정한다.
쿼리 문자열 (uid=1) : 지정된 리소스에 임의의 파라미터를 넘겨주기 위해 쿼리 문자열을 사용한다. (옵션)
프래그멘트 식별자 (ch1) : 취득한 리소스에서 서브 리소스(도큐먼트 중간에 위치)를 가리키기 위해 사용한다. (옵션)

 

참고

그림으로 배우는 HTTP Network Basic
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함