스마트웹앱콘텐츠전문가/파이썬(플라스크, 데이터 처리)

[네트워크 프로그래밍]

9D4U 2018. 1. 24. 17:51
728x90
반응형

파이썬은 HTTP, SMTP, POP3, Telnet 등의 프로토콜을 구현한 다양한 인터넷 라이브러리를 제공함.

예) 웹 문서 수집기, 파일 송수신 프로그램, 이메일 클라이언트 등.


- TCP/IP 스택

컴퓨터기리 네트워크에서 데이터를 주고 받으려면 그 네트워크에서 통용되는 '프로토콜(규약,규칙)'을 따라야함.

통신을 위한 프로토콜은 상당히 많지만, TCP/IP가 실질적인 인터넷 표준 프로토콜로 자리를 잡았다.


○TCP/IP는 사실상의 표준 프로토콜로써, 인터넷에서 데이터를 주고 받는데 필요한 일련의 프로토콜 모음(Suite)임.

크게 4계층으로 구성되어 있음, 한 계층 위에 다른 계층이 포개진 형태 때문에 이것을 TCP/IP 스택(Stack)이라고 부르기도 함.


Application Layer  (응용 계층) 예) 웹 브라우저, 인스턴트 메신저, 팟캐스트 서비스 등..

Transport Layer (전송 계층)

Internet Layer (인터넷 계층)

Link Layer (링크 계층 = 물리계층 = 네트워크 접속 계층)

● 링크 계층

TCP/IP는 네트워크의 물리적인 구성으로부터 독립적인 프로토콜임.

즉, 컴퓨터가 네트워크에 모뎀으로 연결되어 있든, 이더넷 케이블로 연결되어 있든, 와이파이로 연결되어 있는 전혀 신경쓰지 않음(구애 받지 않음).

-> 링크 계층에서 네트워크의 물리적인 연결 매체를 통해 패킷(Packet: 소포)을 주고 받는 작업을 담당해 주기 때문에 가능함.


가령, 어떤 패킷이 네트워크를 통해 컴퓨터에 들어오면 제일 먼저 바로 이 링크 계층을 맞이함. 

이 링크 계층은 들어온 패킷에서 물리적 데이터 전송에 사용되던 부분을 제거하고 인터넷 계층으로 넘김.

이렇게 함으로써 인터넷 계층에서는 패킷이 전파를 타고 넘어왔든 광케이블ㅇ르 타고 넘어왔든 간에 아무 신경도 쓰지 않고 자신의 일을 처리할 수 있게 되는 것임.

● 인터넷 계층

패킷을 수신해야 할 상대의 주소를 지정하고, 나가는 패킷에 대해서는 적절한 크기로 분할하며 

들어오는 패킷에 대해서는 재조립을 수행함.


이 계층에서 사용되는 규약이 바로 인터넷 프로토콜, 즉 'IP'임.(TCP/IP에서의 IP에 해당)

※단지, 내보낸 패킷을 상대방이 잘 수령했는지에 대해 전혀 보장 하지 않음.

● 전송 계층

이름 그대로 패킷의 '운송(전송)'을 담당하는 프로토콜이 정의되어 있음. 

그 중에서도 전송 제어 프로토콜(TCP)는 송신측과 수신측 간의 연결성을 제공하며, 신뢰할 수 잇는 패킷 전송 서비스를 제공함.

※여러 개의 패킷을 송신하는 경우 패킷 사이의 순서를 보장하며, 패킷이 유실되기라도 하면 재전송을 해주기까지 함.

-> TCP는 IP가 제공하지 않는 연결성과 신뢰성을 제공하느라 성능에서 손실을 봄. ->

이를 위한 대한으로 전송 계층에는 UDP라고 하는 프로토콜이 정의되어 있음.(TCP와 다른 점은 연결성, 신뢰성을 제공하지 않지만, 성능이 상당히 우수하기 때문에

전송 제어를 직접 처리하는 애플리케이션 수준에서 채용되는 경우가 많음)

TCP/IP 프로토콜에서 'TCP'에 해당.

● 애플리케이션 계층

각 응용 프로그램 나름의 프로토콜들이 정의되는 곳.

예를 들어, 웹 문서를 주고 받기 위한 HTTP, 파일 교환을 위한 FTP, 네트워크 관리를 위한 SNMP 등이 애플리케이션 계층에서 정의된 프로토콜들임.

애플리케이션 게층의 프로토콜들은 전송 게층의 프로토콜 중 TCP에 기반(예: HTTP, FTP)할 수도 있고, UDP에 기반(예: SNMP)할 수도 있음.

- TCP/IP의 주소 체계 : 

○ IP 주소

○ 포트 

잘 알려진 포트(전 세계적으로 합의된 값)

HTTP: 80

HTTPS: 443

FTP: 21

Telnet: 23

SMTP: 25

IRC : 194

IIOP : 535

※ 포트 보안에 유의

- TCP/IP 의 동작 과정

TCP/IP는 서버/클라이언트 방식으로 동작함. 통신을 수행하는 양단 중 한쪽에서는 한쪽에게 서비스를 제공해야 한다는 것임.

예) 웹서버와 웹브라우저, FTP서버와 FTP 클라이언트, SMTP 메일 서버와 메일 클라이언트 등.

○ TCP/IP 통신을 위해서는 먼저 서버가 서비스를 시작해야 함.

○ socket 예시

● socket과 TCPServer를 이용한 TCP/IP 프로그래밍

파이썬에서는 HTTP, FTP, SMTP등 다양한 프로토콜을 구현한 네트워킹 라이브러리들이 있는데, 그 라이브러리들이 공통으로 사용하는 라이브러리가 있음.

그것은 바로 socket 모듈임.

socket 클래스를 이용하면 거의 모든 인터넷 프로토콜을 구현할 수 있지만, 익히고 사용하기가 간단하지 않음.

따라서, TCPServer 클래스 모듈도 함께 사용함.


● TCPServer 클래스

이름이 말하는 것처럼 서버 애플리케이션에서 사용하며 클라이언트의 연결 요청을 기다리는 역할을 함.

TCPServer 클래스가 실이라면, BaseRequestHandler 클래스는 바늘임.

728x90

'스마트웹앱콘텐츠전문가 > 파이썬(플라스크, 데이터 처리)' 카테고리의 다른 글

[python3]리스트  (0) 2018.11.27
[그래픽 인터페이스]  (0) 2018.01.25
[트위터 활용]  (0) 2018.01.24
[파일처리]  (0) 2018.01.23
[예외처리]  (0) 2018.01.23