1. 웹브라우저가 URL을 해석하고 IP주소와 MAC주소를 받아옴
- URL 주소 중 도메인 네임 부분을 DNS 서버에서 검색해 IP주소를 받아온다.
- 브라우저 캐시에 도메인 네임이 있는지 확인하고 Local router, ISP의 캐싱 DNS 등에 확인
- ARP 프로토콜(address resolution protocol)로 대상의 IP와 MAC address를 알아낸다.
(ARP table에 데이터가 없다면 브로드캐스트로 ARP요청 패킷을 보냄)
2. 대상과 TCP 통신을 통해 Socket을 연다
- TCP를 이용해서 데이터를 전송: 연결을 하기 위해서는 3-way-handshake를 이용, 연결을 해제할 때는 4-way-handshake 를 이용
TCP 연결(3-way-handshake), 해제(4-way-handshake)
- 연결
클라이언트가 서버에 연결을 요청하는 SYN(a)를 보냄 → 서버는 클라이언트에게 요청을 수락하는 ACK(a+1)과 SYN(b)를 보냄 → 클라이언트가 ACK(b+1)을 보내면 연결이 성립한다 - 해제
클라이언트가 연결을 해제하는 FIN 플래그를 보냄 - 서버는 확인 메시지 ACK - 잠시 TIME_OUT, 데이터를 모두 보내고 클라이언트에게 FIN 플래그를 보냄- 클라이언트는 ACK를 보냄 - 서버는 클라이언트의 메시지를 받고 소켓 Close - 클라이언트는 데이터는 다 받기 위해 잠시 TIME_WAIT
3. HTTP 프로토콜로 요청한다.
- HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성
- HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송
- 요청된 웹 페이지 데이터는 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성하고 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다.
4. HTTP 서버가 응답한다.
- 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환되어 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 된다.
5. 브라우저가 서버의 응답을 해석 후 HTML 컨텐츠를 브라우저창에 표시한다.
URL 구성
- 웹 리소스는 웹 콘텐츠의 원천, URI는 인터넷 우편물 주소 같은 것으로 클라이언트가 웹 상의 리소스를 고유하게 식별하고 위치를 지정할 수 있게 해줌
- URL은 리소스 식별자의 가장 흔한 형태
- 첫 부분 스킴(scheme) : 리소스에 접근하기 위해 사용되는 프로토콜 서술
- 두 번째 부분은 서버의 인터넷 주소
- 마지막 부분은 웹 서버의 리소스를 가르킴
- 제일 앞에 프로토콜을 적고 프로토콜 이름을 구분하는 구분자인 ":" 사용
- IP 혹은 Domain name 정보가 필요한 프로토콜이라면 ":" 다음에 "//"를 사용
- URL이 문법에 맞지 않으면 브라우저의 기본 검색엔진으로 검색 요청)
IP 주소란?
- 네트워크 상에서 서로를 인식하기 위한 식별 번호로 4개의 옥텟으로 구성된다.
- 즉 32비트 길이의 숫자이며 각 옥텟은 0~255까지를 나타내게 된다.
- 피지컬 주소 개념인 MAC주소보다 효율적이다.
DNS 서버란?
- 수신처의 IP주소를 알아내는 방법
- IP주소를 문자로 표현한 것을 Domain name이라 부른다.
- 따라서 사람은 "www.naver.com"와 같은 문자열 주소를 입력하는데 이를 컴퓨터가 이해하기 위해서는 IP주소로 변화할 필요가 있다.
- 이때 도메인 네임과 함께 해당하는 IP 주소값을 한 쌍으로 저장하고 있는 데이터베이스를 DNS라 부른다.
- DNS에 요청을 보내기 전에 브라우저에 도메인이 캐시되어 있는지 확인
- 로컬 hosts파일에 참조할 수 있는 도메인확인 -> 없으면 로컬 라우터, ISP의 캐싱 DNS로 요청
- 인터넷 초창기에는 호스트명과 IP주소를 매핑하기 위해 텍스트파일 형태인 hosts파일을 사용해서 IP주소 변환을 하기도 했음
- ISP에서도 찾을 수 없다면 계층형 name 서버와 통신해서 받아옴(abc.naver.com 이라 한다면 .com(루트네임서버) -> naver.com(TLD 네임서버) -> abc.naver.com(권한있는 네임서버) 등 계층적으로 요청)
- DNS 서버의 계층 구조(루트네임서버, 하위 계층 DNS서버에 대한 정보 -> KR, UK 등 서버 -> ISP에서 관리하는 DNS 서버 등)
- DNS서버는 콘텐츠 서버와 캐시 서버로 구성되며 캐시서버에 없는 정보의 경우 루트네임서버->KR DNS 서버 -> sample DNS서버 등 계층적으로 질의하며 응답을 받음
- ICANN에서 최상위 도메인(TLD) 관리, 분야별 gTLD, 국가별 ccTLD 등이 있음, 각 TLD는 위임된 관리조직이 관리
ARP 프로토콜
- 데이터 통신시 수신처의 MAC주소는 수신처의 IP주소가 결정 된 후 정해짐
- ARP는 Address Resolution Protocol로 IP주소를 이용해서 MAC주소를 알아내는 방법임
- ARP 테이블 :IP주소와 대응되는 MAC주소에 대한 데이터표, 만약 ARP테이블에 없다면 브로드캐스트로 ARP요청을 보냄, ARP요청을 통해 MAC주소를 알아내면 자신의 ARP테이블에 내용을 저장하지만 MAC주소 및 IP주소의 변동 가능성이 있어 일정시간(약 300초) 가량만 저장 후 파기함
- IP주소를 물리적 네트워크 주소(이더넷 48비트 네크워크 인터페이스 카드 주소)로 대응시키기 위한 프로토콜
- 물리적네트워크주소(MAC, 데이터 링크 계층, 2계층) : 하드웨어에 할당된 주소
- 계층마다 사용되는 프로토콜이 다름(IP는 네트워크 계층이 3계층에서 사용, MAC주소는 2계층에서 사용)
- 송신측에서 요청 패킷에 수신 측의 IP주소를 설정한 후 네트워크 전체에 브로드캐스트함
- ARP Header(sender, target의 IP주소, 하드웨어 주소 등이 포함됨) → 브로드캐스트로 보냄(받는사람의 맥주소를 몰라 같은 네트워크 모든 호스트들에게 보냄)
- 프록시ARP : 호스트 대신 라우터가 ARP에 대해 응답, 서브넷 마스크 값이 다른 호스트가 있을 때 필요한 기능, 라우터가 자신의 MAC주소를 대신 응답
소켓이란?
포트는 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값이며 소켓은 두 프로그램이 네트워크통해 서로 통신할 수 있는 통신 창구같은 개념. 소켓은 프로토콜, IP 주소, 포트 넘버로 정의되며 하나의 포트에 여러개의 소켓을 열 수 있다.
HTTP
웹 브라우저가 웹 서버에 요청하는 프로토콜(컴퓨터 네트워크에서 데이터를 교환하거나 전송하기 위한 방법), '하이퍼 텍스트 전송 규약'을 사용하라는 뜻.
참고링크
'CS' 카테고리의 다른 글
[CS]MVC패턴이란? (0) | 2021.03.16 |
---|---|
[CS]아키텍처란? (0) | 2021.03.15 |
[CS]컴파일러와 인터프리터 차이(바이너리코드와 바이트코드) (0) | 2021.03.14 |
[DB] NoSQL이란? (0) | 2021.03.14 |
[OS]프로세스와 스레드의 차이 (0) | 2021.03.04 |