Web Server Programming
세계에서 가장 많은 개발자가 웹서버 프로그래머
웹개발: 가시화. 웹프로그램 아키텍처가 페이지 개념의 프로그래밍 방식이라 진입장벽이 낮다.
01. OSI 참조 모델
개요
dependency를 줄이는 것이 관건
하드웨어에 의존적인 것을 소프트웨어 의존적으로 만들어, 표준화된 API를 가지고 작업할 수 있게끔 작업하자 = OSI(Open System Interconnection) model
통신 기술의 도입과 통신 기능의 확장을 쉽게 하려고 프로토콜을 몇 개의 계층으로 나누는 것을 ‘계층화’라 하고, 통신 기능을 7계층으로 분류하여 각 계층마다 프로토콜을 규정한 규격 = OSI model
데이터 전송
데이터 송신은 물리계층->응용계층, 데이터 수신은 응용계층->물리계층이다.
7개 계층은 서로 독립적
localhost는 망과 접속하기 전까지 갔다가 돌아오는 경로이다. (물리계층->네트웍계층->물리계층)
전송 계층 Transport Layer
프로토콜(TCP, UDP)과 관련된 계층으로 오류 복구와 흐름 제어 등을 담당하며, 두 시스템 간에 신뢰성 있는 데이터를 전송한다.
또한 네트워크 계층에서 온 데이터를 세션 계층의 어느 애플리케이션에 보낼 것인지 판독하고, 네트워크 계층으로 전송할 경로를 선택한다.
OSI 참조 모델 7계층 중 전송 계층은 네 번째 게층으로 시스템 종단 간에 투명한 데이터를 양방향으로 전송하는 계층이다.
네트워크 계층에서 전송한 데이터와 실제 운영체제의 프로그램이 연결되는 통신 경로라고 할 수 있다.
TCPIP의 핵심. 다른 컴퓨터로 보내는 역할. 전송계층에서 IP 정의
IP는 global하게 전 지구상 컴퓨터를 구분하겠다는 컨셉
컴퓨터 고유 주소는, 랜카드에 부여된 주소는 mac address. 고유 주소. -> 유일한 식별 번호
랜카드 주소를 다른쪽으로 어디든지 연결할 수 있지만, 구조가 복잡.
lan address로 통신하는 게 아니고, 상위 단계인 TCP으로 통신하고 있다.
IP로 컴퓨터와 컴퓨터를 구분한다.
- TCP (Transmission Control Protocol)는 송신지에서 수신지까지 문자 스트림을 전송하는데, 두 응용 계층이 서로 대화하는 것을 허용하는 신뢰성있는 프로토콜이다.
TCPI의 성능은 OSI 참조 모델의 전송 계층보다 뛰어나다.
TCP: 정확하게 수신자가 받게 한다. 대신 상대적으로 느림
- UDP(User Datagram Protocol)는 OSI 참조 모델에서 정의하는 전송 계층의 일부역할을 무시하는 단순한 전송 프로토콜이다.
UDP는 TCP에 비해 신뢰성이 낮으며, 흐름 제어 및 오류 검출등의 기능이 없어 패킷을 빠르게 전송해야하는 응용 계층에서 사용한다.
신뢰성이 없다고 해서 데이터가 중간에 바뀌는 것은 아니다 단지 빠트릴 수도.
UDP: 신뢰성이 없는 프로토콜. 데이터를 보내면, 보내기만 하고 책임 안 져. 데이터를 보내면 기본적으로 받는 사람이 잘 받았는지 안받았는지 몰라, 중간에 혼신될 가능성이 있다. like 우편시스템.
속도가 매우 고속이다. 요즘 안 쓰는 이유는 네트웍이 많이 빨라졌고 신뢰성 있는 전송이 중요해서. UDP보다 TCP를 사용한다.
응용 계층
- 응용 계층과 사용자(사람 또는 소프트웨어), 표현 계층 간의 관계를 보여준다.
소프트웨어 간 통수신.
ex) 브라우저웹, 이메일, ...
응용 계층 데이터 단위: 메시지
나름대로 포맷을 가진다.
수신자는 문법에 맞춰 디코딩하고 데이터를 확인한다.
IP 위에 응용계층이 있다. 응용계층 like 개별적으로 돌아가는 프로그램
포트번호 필요. 없으면 응용 계층으로 데이터를 보낼 수 없다
well-known port : http(80), ...
- 인터넷 모델의 응용 계층에 포함되어 있는 프로토콜 일곱 개와 프로그램은 원격으로 컴퓨터 자원에 접속하는데 사용한다.
- 응용 프로그램들로 제공되는 서비스는 표현계층과 세션계층에서 정의하고 있다.
우리가 아는 모든 프로토콜은 응용계층이다.
ex) SMTP, FTP, 텔넷, DNS, SNMP, NFS, TFTP, ... : 세션계층, 표현계층, 응용계층을 다 포함한다.
TCP/IP address
TCP/IP 주소의 구조
- 물리 주소
- 물리 주소(MAC 주소)는 링크 주소 또는 통신망에서 정의된 노드의 주소, 이더넷 네트워크 인터페이스 카드(NIC) 6바이트(48비트) 주소 등을 말한다.
- 인터넷 주소
- 인터넷에서는 기존 물리 주소와는 별도로 각 호스트를 식별할 수 있는 유일한 주소를 지정해야 한다.
- 포트 주소
- 수신지 컴퓨터까지 전송하려면 IP 주소와 물리주소가 필요하다.
- 인터넷통신의 최종목적은 한 프로세스가 다른 프로세스와 통신할 수 있도록 하는 것이다.
IP (Internet Protocol)
인터넷에 연결된 모든 컴퓨터에는 고유의 주소가 부여되는데, 이를 'IP 주소'라고 한다.
- 현재 사용하는 IP 주소 체계는 IP Ver. 4이다.
- IP 주소는 8비트 크기의 필드 네 개를 모아서 구성한 32비트(4바이트) 논리 주소이다.
- ×××.×××.×××.×××, 즉 163.152.19.114처럼 .(점)으로 구분한 10진수 형태 네 개로 구성된다.
- 한 바이트가 가질 수 있는 10진수는 0~255이므로, IP 주소의 값은 0.0.0.0에서 255.255.255.255까지이다.
TCP (Transmission Control Protocol)
포트 번호
포트는 TCP가 상위 계층으로 데이터를 전달하거나 상위 계층에서 TCP로 데이터를 전달할 때 상호 간에 사용하는 데이터의 이동 통로를 말한다.
통신할 때 여러 웹사이트에서 파일을 동시에 다운로드할 수 있다.
파일을 동시에 다운로드할 수 있는 이유는 TCP 프로토콜이 포트를 여러 개 사용해서 상위계층의 프로그램과 각각 따로 통신하기 때문이다.
TCP 포트범위는 0~65,534까지의 정수다.
8bit = 1byte=0255이므로, TCP 포트 범위는 065534(=16bit) 이다.
'Python > Django' 카테고리의 다른 글
Django에 Database 사용하기 (1) | 2020.02.19 |
---|---|
HTML과 python web server 구축 (0) | 2020.02.18 |
Python Socket programming (0) | 2020.02.18 |
AJAX를 활용한 비동기 방식 웹페이지 Django로 구동하기 (0) | 2020.02.14 |
Django 기본 (0) | 2020.02.14 |