Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스케줄링
- K8S
- nestjs
- 분산처리
- gunicorn
- Alembic
- 백엔드 개발자
- 캐시서버
- 회고
- uvicorn
- AWS
- 로드밸런서
- 멀티스레드
- SQLAlchemy
- EKS
- 2022년
- golang
- FastAPI
- alb
- 싱글톤 디자인 패턴
- Python
- 쿠버네티스
- 글또
- nodejs
- 메모리구조
- Django
- 가비지컬렉션
- 스레드풀
- 쿠베네티스
- CPU스케쥴링
Archives
- Today
- Total
서버에서 살아남기
브라우저에 www.google.com 을 입력하면? 본문
💡 요약
1. 브라우저에 URL 입력
2. DNS를 통해 서버의 IP주소를 찾음
3. client 에서 HTTP request 메세지 전송 > TCP/IP 패킷 생성 > 서버로 전송
4. 서버에서 response 메세지 > TCP/IP 패킷 생성 > client로 전송
5. 웹 브라우저에 출력
1. 유저가 브라우저에서 www.google.com 을 입력하면 HTTP Request message를 생성
2. IP 주소를 알아야 하므로 DNS에 해당 도메인의 IP주소를 요청하여 IP 주소 획득
클라이언트에서 전달받은 메세지에는 아래의 세가지 정보가 포함됩니다.
- 이름 : www.google.com
- 클래스
- DNS 구조를 고안했을 때 인터넷 이외의 네트워크에서 이용할 수도 있음을 고려하여 식별하기 위한 값인 클래스를 만들음. 그러나 지금은 인터넷 이외의 네트워크가 소멸됐으므로 클래스는 항상 인터넷을 나타내는 IN 이라는 값을 가짐
- 타입
- 이름에 어떤 타입의 정보가 지원되는지를 나타냄. 예를 들어 타입이 A면 이름에 IP 주소가 지원되는 것을 나타냄.
- IP 주소를 조회할 때 : A
- 메일 : MX
- 이름에 닉네임을 붙이기 위한 CNAME
3. 해당 IP 주소로 요청 시 OSI 모델의 캡슐화 과정
3-1. 각 계층에서 하는 일
- 응용계층
- 애플리케이션과 데이터를 주고 받는 게층
- 클라이언트의 요청을 전달하기 위해 통신 대상(ex. 서버)이 이해할 수 있는 형태로 데이터를 변환하고 전송계층으로 전달하는 역할
- 전송계층
- 신뢰할 수 있는 통신을 구현
1) 오류를 점검하는 기능
2) 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능 - 특징
- 신뢰성/정확성 > 연결형 통신 (TCP 통신)
즉, 연결 설정 과정을 거침. - 효율성 > 비연결형 통신 (UDP 통신)
ex. 동영상 시청 시
- 신뢰성/정확성 > 연결형 통신 (TCP 통신)
- 신뢰할 수 있는 통신을 구현
- 네트워크 계층
- 다른 네트워크(인터넷 상의 모든 컴퓨터)와 통신하기 위한 경로 설정 및 논리 주소를 결정
- 경로를 선택하여 주소를 정하고 경로에 따라 패킷(IP주소 + 데이터)을 전달함
- 데이터 링크 계층
- 같은 네트워크에 존재하는 여러 대의 컴퓨터를 보다 쉽게 통신할 수 있게 만들어줌.
1) 주소 할당 : 물리 계층으로부터 받은 신호들이 네트워크 상의 장치에 올바르게 안착할 수 있게 해줌
2) 오류 감지 : 신호가 전달되는 동안 오류가 포함되는지 감지. 오류가 감지되면 해당 데이터 폐기함. - 가장 많이 사용 되는 규칙은 이더넷
- 같은 네트워크에 존재하는 여러 대의 컴퓨터를 보다 쉽게 통신할 수 있게 만들어줌.
- 물리 계층
- 데이터를 보내기 위한 매체(물리 장비)를 다루는 계층
- 전기적, 기계적, 기능적 특징을 바탕으로 데이터 통신
- 해당 계층에서는 데이터 전달만 하기 떄문에 검증과 에러 등에 대해서는 고려하지 않음.
3-2. 각 계층별 전송 과정
- URL 입력해서 접속
- 컴퓨터 → 응용계층
- GET/index.html HTTP/1.1
- 응용계층 → 전송계층
- 2-a의 데이터에 TCP헤더가 붙음
- TCP헤더에 들어가는 정보 (출발지 포트, 목적지 포트, 일련번호, 확인 응답번호 등)
- 출발지 포트 번호(웹 브라우저)는 1025번 이상인 포트 중에서 무작위로 선택 되며, 목적지 포트 번호는 웹 서버 포트 번호인 80
- 전송계층 → 네트워크 계층
- 3-a 의 데이터에 IP헤더가 붙음
- IP헤더에는 출발지 IP주소와 목적지 IP주소가 붙음
- IP주소 : 어떤 네트워크의 어떤 컴퓨터인지를 구분할 수 있도록 하는 주소
- 이 외에도 IP헤더에는 버전, 헤더 길이, TTL, 프로토콜 등이 붙음
- 네트워크 계층 → 데이터링크 계층
- 이더넷 헤더와 트레일러가 추가됨
* 이더넷 : 허브와 같은 장비에 연결된 컴퓨터와 데이터를 주고 받을 때 사용 - 이더넷 헤더 : 목적지 MAC 주소, 출발지 MAC 주소
* MAC 주소 : 48비트 숫자이며 전 세계에서 유일한 번호임 - 트레일러(FCS - 프레임 체크 시퀀스) : 데이터 전송 도중 오류가 발생하는지 확인하는 용도
* 패킷을 운반하는 도중 잡음 등의 영향으로 파형이 흐트러져 데이터가 변한 경우 이것을 검출하기 위해 사용
- 이더넷 헤더와 트레일러가 추가됨
- 데이터링크 → 물리 계층
- 데이터를 전기 신호로 변환하여 네트워크를 통해서 전송
'네트워크' 카테고리의 다른 글
사설 IP와 VPN (0) | 2023.07.27 |
---|---|
서버의 부하 분산 (0) | 2022.08.21 |
라우터가 하는 일 (0) | 2022.05.29 |