2020-10-05 TIL
HTTP
- HTTP는 Hypertext Transfer Protocol의 약자로, 전 세계의 웹브라우저, 서버, 웹 애플리케이션이 모두 사용하는 인터넷 공용어
-
신뢰성 있는 데이터 전송 프로토콜 사용; 인터넷의 결함 및 약점에 대한 걱정 없이 기능 구현 가능
-
HTTP 요청 프로토콜 ——————————— GET [자원주소] HTTP/1.1 (CRLF) Host: [서버주소] (CRLF) (CRLF) ———————————
-
프로토콜(protocol)? => 클라이언트/서버 간의 통신 규칙. => 데이터를 주고 받는 규칙.
- HTTP 응답 프로토콜 ——————————– HTTP/1.1 200 OK(CRLF) Content-Type: text/html; charset=UTF-8(CRLF) (CRLF) 보낼 데이터 ——————————–
상태 코드
- 클라이언트의 요청의 성공 여부 등을 알려주는 세 자리 숫자
- 모든 HTTP 응답 메시지는 상태 코드와 함께 반환
- 1xx : 정보 제공
- 2xx : 성공
- 3xx : 리다이렉션
- 4xx : 클라이언트 요청 오류
-
5xx : 서버에서 오류가 발생함
- 200 OK
- 301 Moved Permanently
- 400 Bad Request
- 403 Forbidden
- 404 Not Found
MIME
- HTTP는 수천 개의 데이터 타입을 다루기 때문에 ‘MIME (Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장)‘라는 데이터 포맷 라벨을 웹에서 전송되는 객체 각각에 붙임 쉽게 말하면, 이 웹 콘텐츠가 어떤 데이터 타입인지 알려주는 라벨
- 표현 형식: ‘주 타입/부 타입’
- HTML 데이터 타입 = ‘text/html’
- JPEG 이미지 데이터 타입 = ‘image/jpeg’
- GIF 이미지 데이터 타입 = ‘image/gif’
포트번호
- Port 번호는 16bit : 총 65536개의 port number가 존재
- 0 ~ 1023 번 - Well Known Port (IANA에서 할당한 TCP, UDP 포트) : 유명한 서버, 특정 서버들.
- 1024 ~ 49151 번 - Registered Port (기관이나 사업자들을 위해 IANA에서 관리하는 포트)
- 49152 ~ 65535 번 - Dynamic Port (일반 사용자들이 자유롭게 사용할 수있는 포트)
- Port 번호는 일반적으로 IP address 뒤에 콜론(:)을 이용하여 표기
- ex) 182.143.421.211:443 (포트번호 443)
- 잘 알려진 포트
20 - FTP(data)
21 - FTP(제어) 22 - SSH 23 - Telnet 25 - SMTP 53 - DNS <TCP, UDP> 80 - HTTP <TCP, UDP> 110 - POP3 443 - HTTPS
인코딩 문제
- 인코딩을 스캐너로 인풋할 때 미리 지정하면 한글 깨짐 현상을 해결할 수 있다.
URI > URL, URN
- https://mygumi.tistory.com/139
웹크롤링
- https://lyb1495.tistory.com/17
base64
- https://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80
- html은 텍스트 파일이기 때문에 jpg 파일을 직접 삽입할 수 없다.
- 그러므로 jpg 파일(바이너리 파일)을 텍스트 파일로 변환시켜서 삽입해야 한다.
- 이 때 사용되는 규칙이 Base64 이다.
- Base64 인코딩 => 바이너리 데이터를 문자화시킨다. => 바이너리 값을 6비트식 잘라서(2의 6승) 64진수으로 만든 후 Base64 표에 정의된 대로 해당 값을 문자로 변환한다. => 보통 바이너리 데이터를 텍스트로 전송하고 싶을 때 많이 사용한다. => “ABC012가간” 문자열 414243303132EAB080EAB081(UTF-8 코드) 4142 ==> 0100000101000010… (2진수) 010000 010100 0010… (6비트씩 자른 것) 6비트로 자른 것을 다시 10진수로 표현하면 ==> 16 20 … 16을 Base64 코드표에 따라 문자로 바꾸면 ==> Q 20을 Base64 코드표에 따라 문자로 바꾸면 ==> U … 이런 식으로 문자열을 Base64로 바꾸면 결과는 다음과 같다. QUJDMDEy6rCA6rCB6rCE