최근에 웹 크롤링, 스크래핑을 진행했는데 오늘은 네트워크 7계층을 빗대어
Web에 대해 자세하게 알아보려고 한다.
작성 도중 내가 잘 몰랐던 단어에 대해 중간중간 설명을 넣었다.
먼저 요약을 넣고 아래에 자세하게 설명을 썼다.
애플리케이션 계층 :프레젠테이션 계층 :세션 계층 :전송 계층 : 네트워크 계층 :데이터 링크 계층 : 물리 계층 :OSI(Open Systems Interconnection)란 통신 규격을 만들 때 고안된 것으로, OSI 통신 기능을 7계층으로 나눈 것이다. 이 계층 구조 개념은 다양한 분야에서 공통적으로 참조할 수 있는 '참조 모델'로서 현재도 사용되고 있다.
![]()
그리고 필수적인 요소인 프로토콜 이 있다.
사전에 정해놓은 순서를 의미하며, 컴퓨터 용어로는 '통신 프로토콜'이라는 이름으로 자주 등장하며, 컴퓨터가 서로 소통하기 위해 정한 규약이다.
인터넷을 포함해서 현재 네트워크를 지탱하는 것은 TCP/IP 및 관련 프로토콜이다.
![]()
이제 브라우저에 URL 입력시 동작 과정을 계층 관점으로 한번 살펴보자.
Application 계층 통신
먼저 웹 브라우저 란 웹 위에서 동작하는 애플리케이션이다. 웹 브라우저 크롬, 파이어폭스 등등 모두 애플리케이션이다. 무언갈 요청받은 애플리케이션은 자신이 통신을 하는 것이 아니라 OS, 즉 아래 계층 HTTP(무선 전송 프로토콜), TCP/IP에 맡긴다.
url 창에 text를 입력하면 해당 입력이 search query 인지 url인지 판단한다.
search query(그냥 검색) -> search engine으로 query를 보내서 검색URL -> 해당 URL 분석(scheme,host,port,path 등) 후 아래 계층으로 값 전달웹 브라우저에 url을 입력해보자. 일반적으로 많이 사용하는 HTTP URL 포맷 다음과 같이 표현한다.
<scheme>://<host>:<port>/<path>?<searchpart>
scheme : 제일 앞에 리소스에 접근할 방법을 정의해둔 프로토콜 이름을 적는다.(HTTP/HTTPS)
| HTTP | HTTPS | |
|---|---|---|
| 통신 방식 | 평문 통신(데이터 암호화X) | 암호화 통신(데이터 암호화O) |
| 포트 | 80 | 443 |
| 성능 | 암호화가 없어서 빠름 | 암호화,복호화 과정이 필요해 약간의 성능 저하 |
host : DNS 이름이나 IPv4주소, IPv6 주소를 대괄호로 묶어서 저장한다.
ex)
요약 : HTTP가 보안이 취약해 SSL등 안전한 통신로를 이용해 안전한 통신로를 확립하고 통신로를 사용한게 HTTPS
port : 말 그대로 항구 라는 의미를 가지며 80번 항구 443번 항구 이런 역할이다.
path, search part : path는 특정 리소스를 식별하기 위해 서버 상의 파일 path를 지정해준다. 그렇게 지정된 path 리소스에 임의의 파라미터를 넘겨주기 위해 쿼리 문자열을 사용한다. 이는 옵션이다.
이와같이 여러 DNS 서버를 차례대로 질의하여 답을 찾는 과정을 Recursive Query 라고 한다.
TCP 계층 통신
TCP는 위의 계층으로부터 port,ip,http 데이터 등을 받는다. TCP가 담당하는 건 서버가 송신할 때, 서버가 수신한 후 애플리케이션에 전달할 때로, 상대 서버까지 전송하는 부분은 하위 계층인 IP에 모두 위임한다.
여기서 IP만으로 통신이 가능하지 않을까 생각할 수 있는데 가능하긴 하지만 데이터가 상대방에게 확실하게 전달됐는지 확인하는 기능이나 도착한 순서를 확인하는 기능이 없다.
TCP가 위에서 보내준 port번호를 사용하여 어떤 애플리케이션에 전달할지 판단
TCP는 연결형 프로토콜로 3-way handshaking을 통해 상대방과 통신을 연결한다. 종료할 때는 4-way handshaking이다.
3-way handshaking:
SYN (Synchronize): 클라이언트가 서버에 연결을 요청
클라이언트 -> 서버: SYN (순서 번호 x)
SYN-ACK (Synchronize-Acknowledge): 서버가 클라이언트의 요청을 수락하고, 동시에 클라이언트에게 자신의 연결 요청
서버 -> 클라이언트: SYN-ACK (순서 번호 y, 응답 번호 x+1)
ACK (Acknowledge): 클라이언트가 서버의 요청을 수락
클라이언트 -> 서버: ACK (응답 번호 y+1)
![]()
4-way handshaking:
연결이 생성된 후에 데이터 송수신이 시작된다.
흐름제어
폭주제어
IP 계층 통신
IP 역할은 전달받은 데이터를 서버까지 전해주는 것이다.
IP 주소를 이용해 대상 서버를 지정할 수 있다. 하지만 서버가 항상 같은 네트워크에 있지 않기 때문에 다른 네트워크를 거쳐서 최종 목적지까지 전송되는 과정을 라우팅이라고 한다
전송계층에서 캡슐화한 세그먼트를 IP 패킷으로 캡슐화한다.
데이터 링크 계층 통신
IP패킷이 만들어지면 링크 계층 처리가 시작된다.
여기서 대표적으로 사용되는 프로토콜은 이더넷(Ethernet)이다.
IP는 IP주소를 사용하여 여러 네트워크를 거쳐 데이터를 전송할 수 있지만, 이더넷은 동일 네트워크 내, 즉 자신이 포함된 링크 내에서만 데이터를 전송할 수 있다. 이때 사용되는 주소가 MAC 주소 다.
물리층 통신
물리층은 말 그대로 통신 케이블과 같은 물리적 장비로 데이터를 전송한다.
글이 깰꼼하네요 ^^~ 잘 보고 갑니다 ~!~! 강아지도 너무 귀엽네요