JavaScript Object Notation으로 데이터를 저장하거나 전송할 때 많이 사용되는 경량 data 교환 형식이다. JS에서 객체를 만들 때 사용하는 표현식으로 데이터 통신 방법이 아닌 단순히 데이터를 표현하는 방식을 말한다. 사람과 기계 모두 이해하기 쉽고 용량이 작아 최근에는 XML을 대체하여 데이터 전송에 사용되며 주로 서버와 클라이언트 간의 통신에 사용된다.
JS에서 객체와 JSON 간의 변환
// JSON -> JS string
JSON.parse(jsonData);
// JS object -> JSON
JSON.stringify(jsObject);
네트워크 소켓은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고 소켓으로 데이터를 교환한다. 즉, 통신의 출입구인 파일이다. 이는 OS가 제공하고 관리하며 소프트웨어적으로 구축되었다.
입력과 출력에서 이동하는 byte의 흐름으로 스트림은 읽기 스트림과 쓰기 스트림이 있다. 콘솔의 입출력, 파일 읽기/쓰기, 서버와 클라이언트의 요청과 응답(TCP/IP에서 소켓을 이용한 데이터 통신) 등이 있다. ex) nodejs의 fs모듈
데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역
port는 같은 IP 내에서 프로세스 구분하기 위해 사용된다. 0 ~ 65535 할당 가능하나 0 ~ 1023는 잘 알려진 포트로 사용하지 말자!! 이외에 자주 사용하는 포트는 아래와 같다.
IP주소는 외우기도 어렵고 바뀔 수 있는 문제가 있는데 이를 전화번호부처럼 관리할 수 있다. DNS 서버에 도메인 명과 해당 IP주소를 등록한다. 우리가 해당 도메인에 접근할 때 DNS가 도메인 명을 IP주소로 변환하게 된다. 이후에 IP 주소가 바뀌었을 때 DNS 서버의 IP주소를 변경하면 된다.
URI, URL, URN은 헷갈리는 개념일 수 있다. 위의 그림에서 알 수 있듯이 URL은 리소스의 위치를 나타내고, URN은 리소스의 이름을 나타낸다. 위치는 변할 수 있지만 이름은 변하지 않는다. 하지만 이름만으로 실제 리소스를 찾기는 어려워 URN은 거의 사용하지 않는다.
URI는 URI와 URN을 포함하며 의미는 아래와 같다.
scheme://[userinfo@]host[:port][/path][?query][#fragment]
ex) https://www.google.com:443/search?q=hello&hl=ko
scheme : 주로 프로토콜을 사용(http, https, ftp 등)
userinfo : URL에 사용자 정보를 포함해서 인증해야 할 때 사용하나 거의 쓰지 않음
host : 호스트명으로 도메인명 또는 IP주소를 직접 사용
port : http는 80포트를, https는 443포트를 주로 사용하며 포트는 생략 가능하다.
path : 리소스 경로, 보통 계층적 구조이다.
query : key-value 형태로 ?로 시작, &로 추가 가능하다. query parameter, query string으로도 불린다.
fragment : html 내부 북마크 등에 사용되며 서버로 전송되지 않는다.
https://velog.io/@ym1085/JSON-%EC%82%AC%EC%9A%A9%EB%B2%95
https://m.blog.naver.com/ginameee/220839976258
https://www.inflearn.com/course/lecture?courseSlug=http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&unitId=61355&tab=curriculum