CS/네트워크

[web]웹 통신

용감한 개복치 2022. 2. 17. 00:26

INDEX

 

1. 클라이언트-서버 아키텍쳐

2. HTTP 통신

3. API

4. 브라우저 작동원리

5. URL & URI

6. IP 주소 & 포트


1. 클라이언트-서버 아키텍쳐

https://velog.io/@bining/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80-%EC%84%9C%EB%B2%84

리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 아키텍쳐.

위의 2단 아키텍쳐에 db를 따로 빼면 3-tier 아키텍쳐.

클라이언트는 리소스를 사용, 서버는 해당 리소스를 전달, db는 리소스를 저장하는 방식.

공통적으로 클라이언트가 인터넷을 통해서 서버에게 요청(Request) 하면 서버가 인터넷을 통해 클라이언트에게 응답(Response)한다. 이때, 인터넷을 통해 데이터를 주고받을 수 있도록 하는 규칙이 프로토콜.

프로토콜에는 몇 가지 종류가 있음

 

2. HTTP 통신

1번에서 서술한 인터넷을 통해 데이터를 주고받도록 하는 규칙을 프로토콜, 통신규약이라고한다.

프로토콜은 종류가 다양한데, 가장 대표적인 서버-클라이언트 아키텍쳐를 따르는 것이 HTTP 프로토콜. 공개된 범용 프로토콜이며 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동. IBM의 SNA 프로토콜과 같이 폐쇄적이고 독자적인 규약도 있다. 

웹에서 HTML, JSON 등의 정보를 주고 받으며 여기서 보안이 강화된 버전이 HTTPS.

 

불특정 다수를 대상으로 하는데 적합하며 접속 유지를 최소한으로 유지해 더 많은 유저의 요청을 처리할 수 있다.

이를 위해 stateless, connectionless로 운영된다. 클라이언트의 이전 상태정보를 알 수 없다는 단점이 있으나, 이를 많이 들어본 쿠키를 이용해서 문제를 해결한다.

 

+) 쿠키

구현 방법 등은 나중에 코드 + 예시 함께 돌아오겠습니다.

유닉스 운영체제에서 두 프로그램 사이에 전송되는 작은 데이터 패킷을 매직쿠키라고 하는데 여기서 유래된 것.

주로 세션관리, 개인 설정유지, 사용자 트래킹 등에 사용됨.

http 요청이 서버로 들어오면 쿠키를 http 헤더에 담아서 응답(set-cookie)

크롬 기준 개발자모드에서 확인 가능.

개발자모드 > 어플리케이션 > 스토리지 > 쿠키

 

+ ) 그 외 프로토콜 종류.

프로토콜은 규칙이기 때문에 적용하는 범주마다 다른 프로토콜이 있다.

OSI 7 Layers

계층 프로토콜
응용(application) HTTP, SMTP, FTP, SSH, WebSocket
표현(presentation) ASCII, MPEG, JPEG, MIDI
세션(session) NetBIOS, SAP, SDP, NWLink
전송(transport) TCP, UDP, SPX
네트워크(network) IP, IPX
데이터링크(data link) Ethernet, Token Ring, FDDI, AppleTalk
물리 -

당장 중요한 두 가지만 집중 설명

응용 프로토콜 설명
SSH CLI 환경에서 원격 컴퓨터에 접속하기 위한 프로토콜
SMTP 메일 전송을 위한 프로토콜
FTP 파일 전송 프로토콜
WebSocket 실시간 통신, PUSH 등을 지원하는 프로토콜
전송 프로토콜 설명
TCP HTTP, FTP 통신의 근간이 되는 인터넷 프로토콜
UDP TCP와 달리, 단방향으로 작동하고 더 단순하고 빠르지만 신뢰성이 낮은 프로토콜

 

3. API

Application Programming Interface

응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스 - 위키피디아

그냥 미리 의사소통이 가능하도록 만들어진 접점. 음식점에 메뉴판 같은건데 메뉴판을 보고 클라이언트는 딸기맛 마카롱 주세요~ 하고 서버는 넵 여기있습니다 하고 마카롱을 내줄 수 있는것. 카페에서 메뉴판이 없으면 국밥을 시킬  수도 있으니 미리 정해놓은 인터페이스인것.

 

+) 여기저기 다 적용되는 개념이지만, http에 붙으면 http api가 되고 여기서 제약 조건을 조금 더 만족 시켜주면 리액트 공부할 때 자주 봤던 REST api (Representational State Transfer) 가 된다.

Resource, URI / Verb, HTTP method / Representations로 구성됨.

uri를 통해 자원을 표시, HTTP method를 이용하여 자원의 행위를 표시, 그 결과를 주고받는것.

 

method의 종류 :

GET / POST / PUT( or PATCH) / DELETE

웹 개발 해보면 써봤을 그때 그 get, post 가 맞다.

 

REST api를 잘 쓰기 위해 규약을 잘 지킨 깔끔한 api를 RESTful API 라고 불러줌.

자세한 디자인 예시는 마이크로 소프트에서 정리한 레퍼런스 참조.

https://docs.microsoft.com/ko-kr/azure/architecture/best-practices/api-design

 

Web API 디자인 모범 사례 - Azure Architecture Center

플랫폼 독립성 및 서비스 발전을 지 원하는 web Api 디자인에 대 한 모범 사례를 알아봅니다.

docs.microsoft.com

 

한줄 요약 : 웹 API는 웹 환경을 통해 제공되는 데이터의 CRUD 인터페이스를 제공하는 것.

 

4. URL & URI

  • URI : 식별자. 리소스를 식별하는 식별자. id 값. url을 포함하는 개념. 언제어디서든 늘 같은 리소스에 접근할 수 있도록 함. uri 안에 urn, url 개념이 들어가 있음.
  • 지금 제 블로그 url 입니다.
  • https://bravesunfish.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F#
  • URL : <scheme>://<username>:<password>@<host>:<port>/<url-path>?<query>#<fragment>
    • 가장 앞의 scheme에 따라 문법이다르지만 위 구조를 기반으로 선택적 사용.
    • 사이사이 기호들은 위치에 맞게 사용
    • <scheme>: 사용할 프로토콜의 종류 ex ) http://
    • <username>:<password>: 완전 optional. 제한된 서버 접근시 주로 사용됨.
    • <host>:<port>: 하나의 host, 컴퓨터 안에서 여러개의 프로세스가 각각 소켓을 가지고 데이터 통신을 하기 때문에 각각을 구분해야함. 이때 소켓 하나에 하나씩 구별하여 배당하는 것이 포트. 로컬에서만 돌아가는 앱을 만들면 보통 localhost:8080 이 뜨는데 localhost, 127.0.0.1, www.google.com 부분. 도메인 혹은 IP. 뒤의 :이하 숫자가 포트. www.google.com 처럼 일반 웹주소에 :포트 번호가 안보이는데 안보이면 대부분 80이 숨겨진것. 이부분은 따로 5번에서 후술.
    • <url-path> 웹서버의 루트 디렉토리로부터 웹페이지, 이미지 등의 파일 위치까지의 경로. 초창기에는 실제 웹서버에서 물리적 파일 위치를 나타냈지만 요즘에는 추상화하여 보여줌.
    • <query> 쿼리. 추가 파라미터. 웹서버에 제공되며 &으로 구분된 키/값으로 짝을 이룬 리스트
    • <fragment> 앵커. 일종의 북마크. 부분 식별자 라고 알려지며 요청이 서버에 보내지지 않음.

 

5. IP 주소 & 포트

  • IP : Internet Protocol address. 윈도우 기준 ipconfig 를 cmd 창에 치면 IPv4 뒤에 나열되는 그 숫자들. 192.xxx.xxx.x / 172.0.xxx.xxx 식으로 전개된다면 사설 ip. 공유기를 통해서 부여받은 ip란 뜻이다. 공유 ip가 알고싶다면 제일 쉬운 방법은 알고싶은 기기로 네이버에 ip 물어보면 바로 가르쳐준다.
    • 사설 ip(private ip)는 공인 ip에서 하나씩 부여해 주는 건데 쉽게말하자면 집에 와이파이 공유기(라우터와 거의 비슷한 의미)가 연결된 노트북, 핸드폰에 하나씩 부여해주는 것. 그래서 같은 와이파이안에서 각각의 ip는 고유하다. 외부에서 접근 불가능함. 사설 IP가 유동 IP인 경우가 많다.
    • 공유 ip(public ip)는 회사 서버, 혹은 집에 있는 공유기(라우터). 인터넷 상에서 유일한 주소로 ISP(인터넷 서비스 공급자)가 부여해준다. 보통 공인 IP를 고정 IP로 부여한다. vpn 회사가 이때 등장한다
    • IPv4는 뒤에 숫자가 ip라고 했다. 뒤의 숫자가 .을 기준으로 네 덩어리로 나뉜다. ip의 4번째 버전이란 뜻으로 각 덩어리 당 0 - 255 까지 나타낼 수 있기 때문에 약 2^32인 43억개의 주소를 표현 할 수 있다. 그 중 용도가 정해진 것들이 몇 개 있고, 이것조차도 다 써버려서 IPv6이 등장한다. 이건 128비트로 43억^4...얼마지..  
      • localhost, 127.0.0.1 : 현재 사용 중인 로컬 PC를 지칭
      • 0.0.0.0, 255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소. 서버에서 접근 가능 IP 주소를 broadcast address 로 지정하면, 모든 기기에서 서버에 접근 0.
      • 자세한 차이는 아래 공식사이트 확인.
      • https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/resources/ipv6Info.jsp

 

 

한국인터넷정보센터(KRNIC)

도메인 소개, 등록 및 사용, IP주소, AS번호, DNS 정보, 관련규정 제공

xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e

 

  • 포트(port) : 인터넷 프로토콜 스위트에서 포트(port)는 운영 체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이라 하며, 예를 들어 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다. - 위키백과
  • 쉽게 풀어쓰면 인터넷도 컴퓨터 입장에선 결국 데이터 입출력의 한 종류일 뿐이다. 그 입출력을 하는 물리적, 논리적 출입구를 구별하기 위한 문 번호라는 말.
  • 일반적인 네트워크 어플리케이션(응용 레벨의 프로토콜들)은 대체로 TCP 프로토콜 위에 만들어진 네트워크 프로토콜. 서버가 되는 머신에 이러한 TCP 커넥션을 받을 수 있는 문의 번호를 포트라는 이름으로 지정.
  • 그 중 잘 알려진 포트 라는 이미 사용용도가 정해진, 위에서 서술한 HTTP 같이 유명한 프로토콜들이 차지 하고 있는 몇 포트만 주의해서 살펴보자.
  • 포트 용도
    20 FTP 데이터포트
    21 FTP 제어 포트
    22 SSH (secure shell)
    23 텔넷, 암호화되지않은 텍스트 통신
    25 SMTP 이메일 통신
    53 DNS
    80 HTTP
    443 HTTPS 암호화된 HTTP, over SSL
  • 위의 DNS는 TCP 뿐만 아니라 UDP도에서 동작하는데 내용이 많기 때문에 DNS, HTTP 할때 따로 설명할 것.

 

*** 참고 문헌 ***

https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces

 

API(애플리케이션 프로그래밍 인터페이스)란 - 개념, 기능, 장점

API(애플리케이션 프로그래밍 인터페이스)란 애플리케이션 소프트웨어의 개발 및 통합에 사용되는 정의 및 프로토콜 세트를 뜻하며, 개발 민첩성과 간소화를 지원합니다.

www.redhat.com

https://helloworld-88.tistory.com/146

 

[네트워크] 프로토콜 종류

 프로토콜이란? ■ 등장배경 컴퓨터 네트쿼크의 규모가 증가되고 네트워크를 이용한 정보 전송 수요가 다양화되며, 소프트웨어와 하드웨어 장비가 계속 증가되는 최근의 환경에서 효율적인

helloworld-88.tistory.com

https://lkhlkh23.tistory.com/76

 

HTTP & DNS & TCP 정의 및 동작원리

1. HTTP (HyperText Transfer Protocol) 동작 원리 웹의 동작원리는 아래 이미지와 같이 동작한다. 아래 이미지가 자세하게 나와있기 때문에 별다른 설명이 필요하지 않을거라 생각이 든다. 혹시나 좀더 자

lkhlkh23.tistory.com