개념은 "abstraction", 사실은 "implementation"
개념은 "사람", 사실은 "유형준"
개념은 "이상", 사실은 "실체""사실은 개념의 실체이다."
OSI 7 Layer는 "이상"에 해당한다. 즉, "개념어" 이다.
User mode (운영체제) : S/W의영역
L7 프로세스
L6
L5
FILE (Kernel의 구성요소를 유저모드
어플리케이션으로 추상화할때에는
FILE의 형태로 추상화를한다)
Kernel mode : S/W의 영역
L4(Transport) TCP/IP
L3(Network)
Driver (NIC 하드웨어를 움직일수있는 디바이스 드라이버)
H/W의 영역 :
L2 NIC (network interface card)
L1
- Port 번호:
- S/W 개발 관리 입장(User mode)에서는, PORT는 "프로세스식별자"이다
- Network 관리자 (Kernel mode L4)의 입장에서는, PORT는 "Service"이다. (http에서 80포트인, http service를 사용)
- H/W 에서는, "인터페이스 번호"이다(공유기 단자의 번호)
- IP 주소:
- "HOST"에 대한 식별자 (HOST: "인터넷에 연결된" 컴퓨터)
- MAC 주소:
- NIC (LAN 카: 유/무선)에 대한 식별자
- NIC하나에 여러개의 IP주소를 "바인딩"할수있다
- MAC주소는 변경 가능하다.
"network"에 연결된 컴퓨터 = Computer + Network
- Net 자체를 이루는 HOST = SWITCH
- Router
-- Net 이용주체로서의 HOST = End-Point (단말기)
- Peer
- server
- client
internet = router의 거대한 집합체
internet은 크게 router와 DNS로 이루어져있다
- Router : 경로 선정
- MAC : L2 switch
- IP : L3 switch
- TCP port : L4 switch
- F/W : 보안
- IPS : 보안
HOST에 대한 식별자 : Network에서의 각각의 HOST를 식별하는 주소
1. IPv4 : 주소길이가 32 비트 : 2의 32승 : 43억개
2. IPv6 : 주소길이가 128 비트
IP주소에서 Network ID의 주소 길이를 나타내는게, subnet mask이다.
즉, IP주소에 서브넷마스크를 and연산 한다면, 연산의 결과는 network ID 이다.
192.168.60.14 이고, 서브넷마스크가 255.255.255.0이라면,
and연산의 결과는 192.168.60.0 이며, 이는 network ID이다.
또한 192.168.60.14/24 로 나타낼수있다.
Port 번호는 16bit이다. 대략, 0 ~ 65535 (0과 65535는 사용하지않는다)
또한 port 번호는 socket에 바인딩 된다.
"switch : Net 자체를 이루는 HOST", "라우터가 하는 일"
Packet -> 자동
switching -> 선택
- User mode에서, process가 file에 stream 데이터를 write한다.
- user에서 kernel로 내려가서, tcp로 가면, segmentation (분해: 일정 길이로 자르기)화로, segemnt가 된다.
- 분할하는 길이는 : MSS (maximum segment size) -> packet의 크기에 따라 결정된다 (MTU : Maximum transprot unit : 1500 bytes)
- H/W수준에서, Frame으로 incapsulation이 된다.
즉, user모드 application process 수준에서는 (socket), stream 데이터이다. (끝을 알수없는 연결된 데이터)
그것을 네트워크로 보낼때에는, 분해가일어나는데, 그것을 segmentation이라고하며, 그 단위를 segment라고 한다.
그것을 인터넷 환경에서 전송가능한 형태로 포장한것을 packet이라고 한다.
switching : 인터페이스 선택
chrome은 어떤 경로로 두개의 경로중 어느쪽으로 네이버에 접속을 할까?
티모시 버너스리 (창시자)
문서 (text) + link = HTML (문서양식)
- HTML (문서양식) + 인터넷 연결 = http 프로토콜
= Web
프로그램을 이루는 세가지
1. 인터페이스 = UI
2. 사람에게 보여주고, 사람이 입력할수있도록하는 소프트웨어 = 제어체계
3. 데이터 = 자료구조
tcp/ip는 "연결"이 되어야하므로, 상태를 포함한다.
http의 특징 : "stateless"
그러나 tcp/ip 위에서 작동하는 http는 상태의 개념이 없다.
주소 URL에서 R은 리소스이며, 리소스는 html이다.
http.request.method == Get 을 이용하여, 리소스를 요청
그러므로, get은 read의 역활을 한다.
http.response는 web client에게 html을 넘겨준다.
html을 browser가 읽는 순서 (tag가 있기때문에)
1. 구문분석 (parsing)
- parser가 자료구조(비선형 트리구조)를 생성한다 DOM
2. 화면에 렌더링 (출력)
그렇기에, 브라우저는 "구문분석기"와 "렌더링엔진"로 이루어진다.
초기의 브라우저는 문서뷰어와 같지만, "원격지" 문서 뷰어이다. (단방향 작용 : request -> response)
인터넷이 발전하면서, client로부터 server로의 정보전달(사용자입력)을 포함한 요청도 생겨난다.
또한, web server가 송수신을 담당하였지만, 처리(연산)을 담당하는 요소가 생겨난다.
tester를 post로 받자마자 web server가 바로 처리담당 요소에게 넘기게된다.
인터넷이 발전하면서, client로부터 server로의 정보전달(사용자입력)을 포함한 요청도 생겨난다.
-> 양방향 상호작용 -> 문맥(상태 -> 전이) -> http는 stateless이므로, 달라진상태를 기억(기록)할수가없다.
-> 기억이라는 개념을 저장해 놓아야할 필요가 생겼다. -> database
web-server는 처리를 하는 요소를 통해, 데이터베이스에 특정 데이터를 요청하고, 그에 맞는 데이터를 받은 처리요소는
그에따른 새로운 문서를 "생성"한다.
또한, Web client (브라우저)에서 연산을 할수있는 S/W를 추가한다. -> 자바 스크립트
또힌, client에서의 기록이되는것은 "cookie"로서 구현이된다.
web-server에서 처리(연산)을 하는 주체는 "WAS"
참고 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
또한, 웹서버의 성능은, WAS와 DATABASE에서, DATABASE의 응답속도, 또는 JVM에서 java byte에 따라 결정된다.
그래서, 이 두가지를 모니터링하는 솔루션이있다. : APM (scouter APM)
참고 :
https://blog.naver.com/hj_kim97/222309537552
https://blueyikim.tistory.com/2177
UI의 종류 (안드로이드, 애플, pc 등등)가 많아짐에따라, html을 읽을수있는 방법도 너무 많아졌다. 그렇기때문에,
web-client부분에서 데이터만을 web-server로 전송한다. (json)
web-client부분에서, 데이터를가지고, html을 생성한다. 그러한 프레임워크가 react.js, vue.js...
CRUD의 기능을 call하는것 -> RESTful API.
참고:
https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80
https://declan.tistory.com/8
https://mangkyu.tistory.com/46
http://www.incodom.kr/RestFul_API
local, wide
하드워드로 설명되는 네트워크가 LAN (access 계층) -> MAC주소로 식별되는 네트워크이다.
브로드 캐스트가 적용되는 범위 또한 LAN이다.
= MAC 주소가 중요한 네트워크는 LAN
논리로 설명되는 네트워크가 WAN -> IP주소로 식별되는 네트워크
= IP 주소가 중요한 네트워크는 WAN
https://www.youtube.com/watch?v=Bz-K-DPfioE&list=PLXvgR_grOs1BFH-TuqFsfHqbh-gpMbFoy&index=14