본문 바로가기

Network23

[모든 개발자를 위한 HTTP 웹 기본 지식 강의] 일반헤더의 콘텐츠협상과 전송방식 ✔ 콘텐츠 협상(Content Negotiation)클라이언트가 선호하는 표현 요청:Accept: 클라이언트가 원하는 미디어 타입 전달Accpet-Charset: 클라이언트가 원하는 문자 인코딩Accept-Encoding: 클라이언트가 원하는 압축 인코딩Accept-Language: 클라이언트가 원하는 자연 언어협상 헤더는 요청시에만 사용클라언트가 원하는 방식으로 서버에 요청하는 방식Accept-Language 적용 전GET /eventAccept-Language: ko한국어 브라우저를 사용하는 클라이언트 측에서 서버에 요청을 보낸다Content-Language: ko안녕하세요다중 언어를 지원하는 서버는 Accept-Language를 보고 언어에 맞는 데이터 반환Accept-Language 복잡한 예시G.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] 일반헤더 정보 및 종류 ✔ 일반 Header 정보From유저 에이전트의 이메일 정보Referer이전 웹 페이지 주소User-Agent유저 에이전트 애플리케이션 정보Server요청을 처리하는 오리진 서버의 소프트웨어 정보Date메시지 생성 날짜From유저 에이전트의 이메일 정보일반적으로 잘 사용 안함검색 엔진 같은 곳에서, 주로 사용요청에서 사용Referer이전 웹 페이지 주소현재 요청된 페이지의 이전 웹 페이지 주소A -> B로 이동하는 경우 B를 요청할 때 Referer: A를 포함해서 요청요청에서 사용유입 경로(이전 웹 브라우저 페이지)를 분석할 경우 많이 사용이 된다User-Agent클라이언트 애플리케이션 정보user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) App.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] 일반헤더 개념설명 ✔ HTTP 헤더#1: RequestGET /search?q=hello&hl=ko HTTP/1.1Host: www.google.com #header#2: ResponseHTTP/1.1 200 OKContent-Type: text/html;charset=UTF-8Content-Length: 3423 #header ...header-field = field-name “:” OWS field-value OWS (OWS: 띄어쓰기 허용)field-name은 대소문자 구분 없음HTTP 헤더의 용도HTTP 전송에 필요한 모든 부가정보메시지 바디 내용, 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리정보표준 헤더가 너무 많음필요시 임의의 헤더 추가 가능helloworld: hihiHTTP 헤더분류 -.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] 인증과정-쿠키 10. ✔ 인증완벽한 인증은 없으며, 비밀번호는 유출이되고, 신분증은 위조가 된다완벽한 인증은 존재하지 않는다, 거대한 인터넷 내에서의 보안(인증)은 필수적이다HTTP 기본 인증 과정을 정리하며 인증에 대해 정리 해보자✔ HTTP 인증요구기본 인증기본 인증은 가장 잘 알려진 HTTP 인증 규약기본 인증의 경우 서버는 클라이언트의 요청을 거부하고 추가적인 데이터를 요구할 수 있다서버는 401 상태 코드와 클라이언트가 접근하려했던 부분을 WWW-Authenticate에 적어 반환Authorization클라이언트 인증 정보비밀번호, 개인정보, 등을 서버에 전달WWW-Authenticate리소스 접근시 필요한 인증 방법 정의서버에서 요청을 받은 후 응답을 내려줄 때 같이 반환요청 과정클라이언트 측에서 서버에 G.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] 웹브라우저 요청흐름 ✔ 웹 서비스가 작동하기 위한 수 많은 약속들데이터를 주고받는 약속은 2가지로 구분이 된다TCP / UDPTCP/UDPTCP (전화기)1 : 1 연결만 가능데이터가 손실되면 재전송 요청을 하므로, 신뢰성 높음데이터의 순서와 무결성 보장속도가 상대적으로 느림높은 신뢰도를 요한 서비스에 적합UDP (라디오)1: N 연결 가능정보를 받았는지 확인치 않고 일방적으로 전송데이터의 순서와 무결성 보장하지 않음속도가 상대적으로 빠름IPTV, 실시간 스트리밍에 적합✔ 브라우저 요청 흐름https://www.google.com:443/생략 입력 시 어떻게 페이지를 반환하는 것인가?웹 브라우저 서버 요청 과정웹 브라우저는 DNS 서버 조회를 통해 200.200.200.2(구글 서버) 결과를 받는다위 조회를 통해 IP정보,.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] HTTP 상태코드 ✔ HTTP 상태코드클라이언트가 보낸 요청의 처리 상태를 응답을 통해 알려주는 기능1xx (Informational)요청이 수신되어 처리중2xx (Successful)요청 정상 처리3xx (Redirection)요청을 완료하려면 추가 행동 필요4xx (Client Error)클라이언트 오류, 잘못된 문법등으로 서버가 요청 처리 불가5xx (Server Error)서버 오류, 서버가 정상 요청을 처리 못함만약 모르는 상태 코드가 나타나면?클라이언트가 인식할 수 없는 상태코드를 서버가 반환?클라이언트는 상위 상태코드로 해석 후 처리미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨ex)299 ??? → 2xx (Successful)451 ??? → 4xx (Client Error)599 ?.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] HTTP 개념 설명 ✔ 데이터를 주고받기 위한 규약 HTTP웹 상에서 데이터를 주고받기 위한 규칙 중 하나인 HTTP의 전체 흐름 파악HTTP 메시지에 모든 것을 포함해 전송HTML, TEXTIMAGE, 음성, 영상, 파일JSON, XML (API)거의 모든 형태의 데이터 전송 가능서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용지금은 HTTP 시대라 해도 과언이 아니다HTTP의 역사HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더 xHTTP/1.0 1996년 : 메서드, 헤더 추가HTTP/1.1 1997년 : 가장 많이 사용, 우리에게 가장 중요한 버전RFC2068 (1997) → RFC2616 (1999) → RFC7230 ~ 7235 (2014)HTTP/2 2015년 : 성능 개선HTTP/3 진.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] HTTP-URI-URL-URN ✔ URI & URLURI과 URL은 해당 자원의 위치를 식별하기 위해 사용되는 규칙이다URI(Uniform Resource Identifier)Uniform: 리소스를 식별하기 위한 통일된 규칙Resource: URI로 식별할 수 있는 모든 자원(제한 없음)실시간 교통 정보HTML우리가 구분할 수 있는 모든 것Identifier: 다른 항목과 구분하는데 필요한 정보URL(Uniform Resource Locator)리소스가 있는 위치를 지정URN(Uniform Resource Name)리소스에 이름 부여위치는 변할 수 있지만, 이름은 변하지 않는다.urn:isbn:8960777331 (어떤 책의 isbn URN)URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음✔ URL 분석http.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] HTTP의 TCP와 UDP 통신 ✔ TCP & UDPTCP/UDP가 어떻게 통신을 하는지 알아보자인터넷 프로토콜 스택의 4계층애플리케이션 계층HTTP, FTP전송 계층TCP, UDP인터넷 계층IP네트워크 인터페이스 계층LAN DriverLAN 장비✔ 인터넷 프로토콜 4계층채팅 프로그램을 통한 메시지 전송 과정OSI 7 Layer를 참고하세요웹 브라우저의 채팅 프로그램을 통해 Hello World라는 메시지 입력소켓 라이브러리를 통해 전송계층에 해당 메시지 전달전송계층에서는 TCP를 사용하여 해당 메시지를 패킷에 담아 인터넷 계층에 전달인터넷계층 IP 패킷 생성 후 TCP 패킷의 정보를 담는다마지막으로 네트워크 계층에 IP 패킷 전달네트워크 인터페이스 LAN카드를 통해 전송 시 이더넷 프레임 포함✔ TCP/IP 패킷 정보IP패킷으로 TC.. 2023. 4. 25.
[모든 개발자를 위한 HTTP 웹 기본 지식 강의] HTTP의 PORT와 DNS ✔ PORTPort(포트)를 간단히 이해하기 위해서 아래 예시를 생각 해보자아파트(IP) 안에 있는 호수(Port)한 번에 둘 이상의 서버를 연결?Client의 PC에서 게임, 화상 통화, 웹 브라우저 요청을 동시에 한다고 가정위 같은 상황에서는 어떤 프로그램(P/G)에서 요청을 보냈는지 알 수 없다Client의 IP주소는 100.x.x.1로 동일하기 때문이다즉, 이 때 사용이 되는 정보가 PORT(포트)다TCP/IP 패킷 정보TCP/IP 패킷목적지 및 출발지 PORT번호전송 제어 정보인증 정보전송 데이터PORT 번호 규약PORT 번호는 0 ~ 65535번까지 할당 가능하다0 ~ 1023은 잘 알려진 포트로 사용하는 것을 지양.대표적인 PORT 정보FTP20, 21TELNET23HTTP80HTTPS443.. 2023. 4. 25.