728x90

네트워크

  • 클라이언트 : (일상적) 고객
    • 데이터와 서비스를 요청하는 프로그램
  • 서버 : (일상적) 서비스를 제공하는 사람
    • 데이터와 서비스를 제공하는 프로그램
  • Request (요청)
  • Response (응답)
  • 클라이언트 -> 서버
    • (영상, 파일, 채팅, 메일, 도메인)
    • Request 요청 (주세요!)
  • 서버 -> 클라이언트
    • Response 응답 (알겠습니다!, 여기 있습니다.!)

요청 Request 방법 method

  • C 생성 R 읽기 U 수정 D 삭제
  • GET (R 읽기)
  • POST (C 생성)
  • PUT (U 수정)
  • DELETE (D 삭제)
  1. GET
    • 클라이언트가 서버에 데이터를 요청할 때 사용하는 메서드
  2. POST
    • 특정 데이터를 추가하는 요청
  3. PUT
    • 특정 데이터를 수정하라는 요청
  4. DELETE
    • 특정 데이터를 삭제하라는 요청

Responsee status 응답 상태

  • 세 자리의 코드를 응답한다.
  • 100번대 : 정보가 응답되었다.
  • 200번대 : 성곡적으로 응답되었다.
  • 300번대 : 리다이렉션 메시지
  • 400번대 : 클라이언트쪽 에러 (요청 오류) 문제발생 원인이 클라이언트
  • 500번대 : 서버쪽 에러

HTTP 응답 상태 코드

Header

  • 서버와 클라이언트간의 데이터를 주고받을 때, 해당 정보를 포함하는 데이터
  • 일반 헤더
  • 요청 헤더
  • 응답 헤더
  • Entity(개체) 헤더

URL

  • Uniform Resource Locater
  • 프로토콜://주소 or IP:포트번호/경로?쿼리스트링
import requests

# 설치가 되지 않았을 경우
# pip install requests (주피터 노트북 : !pip install requests)
  • requests 모듈을 불러오는데 설치가 안될경우
  • 위 명령어를 이용해 모듈을 불러온다.
url = "https://www.google.com/search?q=iso+7%EA%B3%84%EC%B8%B5&sxsrf=ALiCzsaEoeBq-b9lxotyL3Sumr4noNqoQA%3A1668994736960&source=hp&ei=sNZ6Y82OOLWv2roPpqmZ6As&iflsig=AJiK0e8AAAAAY3rkwE9H--llhJN_f75M_oQIeutTdSIN&oq=iso+7&gs_lcp=Cgdnd3Mtd2l6EAMYADIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQ6BwgjEOoCECc6CwgAEIAEELEDEIMBOggIABCABBCxAzoLCC4QgAQQsQMQgwE6EQguEIAEELEDEMcBENEDENQCUMk8WJVfYIxraAdwAHgBgAFsiAHGBZIBAzIuNZgBAKABAbABCg&sclient=gws-wiz"

response = requests.get(url)
response # <Response [200]>

# 응답 객체로 변환
type(response)

# 딕셔너리 형태로 header 반환
response.headers
  • 임의의 주소를 불러와 url에 할당한다.
  • 요청 메서드인 requesets 를 사용해 url에 있는 서버로 요청을 보내면
  • Response [200] 이라는 요청에 성공적인 응답을 보내줬다는 ok 사인이다.
  • 이때 객체형태는 응답객체이다.(Response)
  • response 에 header 부분만 요청하면 딕셔너리 형태로 반환된댜.
# 헤더 접근
header = response.headers
header['Date'], header.get('Server')

# 응답 정보 코드
response.status_code

# 잘못된 url의 경우 응답코드
requests.get('https://github.com/expandsoruce/1234')

response.cookies
  • 딕셔너리타입으로 나온 header는 key 값을 입력하여 value 값을 불러낼 수 있다.
  • 해당 요청의 응답 정보 코드를 보고싶으면 .status_code 를 사용하면 된다. 응답에 성공한 경우 200 을 반환한다.
  • 잘못된 url의 경우 404 라는 Not Found 응답코들를 반환한다.
  • 응답코드는 위 부분에 정리가 잘 되어있다.
# HTML 소스 정보에 대하여 스트링으로 반환
type(response.text)

# 응답객체의 내용에 대해 바이트로 반환
type(response.content)

response.text[2000:2500]
  • .text 를 이용하면 응답 정보를 스트링으로 반환해준다.
  • .content는 응당 정보를 바이트로 반환해준다.
# 모듈명 줄이고싶을 대 as 사용
import requests as rq

# 한글의 경우 인코딩이 잘 되지않음
res = rq.get('https://www.daum.net/')
res.text

res.content

# Post 메소드로 보내기
res = rq.post('http://examle.com/', data={'key':'value'})
res.status_code
  • requests 경우도 다른 모듈과 마찬가지로 임의의 줄인 모듈명을 사용할 수있다.
  • 단 한글의 경우 인코딩이 잘 되지 않는다.

OSI 7 Layer 계층

  • Open System Interconnection 7 Layer
  • 네트워크 구조에 대한 기본 모델
  • ISO(국제 표준기구, International Organization for Standardization)에서 정리한 네트워크 구조에 대한 기본 구조

1-4번 까지는 하위 계층 : Data Flow Layer

  1. 물리 계층 Physical Layer
  2. 데이터 링크계층 Data Link Layer
  3. 네트워크 계층 Network Layer
  4. 전송 계층 Transport Layer

5-7번은 상위 계층
5. 세션 계층 Session Layer
6. 표현 계층 Presentation Layer
7. 응용 프로그램 계층 Application Layer

TCP/IP 프로토콜 스택

  1. 네트워크 Network
    1. 물리 계층 Physical Layer
    2. 데이터 링크 계층 Data Link Layer
  2. 인터넷 Internet
    1. 네트워크 계층 Network Layer
  3. 전송 Transport
    1. 전송 계층 Transport Layer
    • TCP(양방향 패킷 송수신)
    • UDP(패킷 단방향 송신)
    • 패킷 : 네트워크가 전달하는 데이터의 형식화된 블록, 네트워크 전송의 용량 단위
  4. 응용 프로그램 Application
    1. 세션 계층 Session Layer
    2. 표현 계층 Presentation Layer
    3. 응용 프로그램 계층 Application Layer
  • HTTP(Hypertext Transfer Protocol)
  • FTP(File Transfer Protocol)
  • IMAP(Internet Messaging Access Protocol) : 메일 송수신
  • SMTP(Simple Mail Transfer Protocol) : 메일 송수신
728x90

'Python' 카테고리의 다른 글

25-1. Numpy(1)  (1) 2022.11.28
21. 크롤링  (0) 2022.11.22
19. 정규식...(진짜 너무한다..)  (0) 2022.11.18
개발 환경 구축  (0) 2022.11.18
17-4. 클래스(OOP)(4)  (0) 2022.11.15

+ Recent posts