1. HTTP란?

- Hypert Text Transfer Protocol

- 80번 포트 사용

- 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜

- 암호화되지 않은 평문 데이터를 전송하는 프로토콜

- Application 레벨의 프로토콜이고, TCP/IP 위에서 작동

- Stateless 프로토콜

 

 

 

2. HTTPS란?

- Hyper Text Transfer Protocol Secure

- 443번 포트 사용

- 데이터 암호화가 추가된 프로토콜

- 공개키 암호화방식 사용

   (간단하게 말씀드리면 공개키 암호화방식에서는 공개키로 암호화, 개인키로 복호화는 암호화/복호화로 사용되고

     개인키로 암호화, 공개키로 복호화 하는 과정을 통해 자신이 작성한? 것임을 서명하는 용도로 사용)

 

- 통신과정

1) P기업은 HTTPS를 적용하기 위해 공개키/개인키를 발급한다.

2) CA(Certificate authority) 기업에 돈을 내고 공개키를 저장하는 인증서 발급을 요청(CA는 엄격하게 인증된 기업)

3) CA기업은 P기업의공개키 를 포함한 정보들을 기반으로 인증서를 생성하고, 이를 CA기업의 개인키로 암호화하여 P기업에 제공

4) P기업은 클라이언트(고객)에게 이 암호화된 인증서를 제공한다.

5) 브라우저는 CA기업의 공개키를 가지고 암호화된 인증서를 복호화한다. (브라우저는 인증된 CA기업의 공개키를 가지고 있음)

6) 5의과정을 통해 P기업의 공개키를 알게되었다.

7) P기업의 공개키로 데이터를 암호화해서 요청을 보낸다. (P기업의 개인키는 P기업만 알고있으므로 P기업만 요청을 확인가능하다., 중간에 제 3자는 이 암호화된 요청을 볼 수 없다.)

 

 

 

3. HTTPHTTPS의 장단점,활용

- HTTP는 보안에 취약, HTTPS는 안전하게 데이터를 주고 받을 수 있다.

- HTTPS는 암호화/복호화의 추가과정 때문에 시간이 더 소요된다고 하지만  요즘은 체감할 정도로 심하진 않다.

- CA기업 인증서 발급을 위한 추가비용 소모된다(HTTPS).

- 거의 대부분 HTTPS를 쓴다. 구글등의 검색포털에서 이를 권장하고 노출도 증가등의 이점이 있다

 

'학부생 공부 > 네트워크' 카테고리의 다른 글

쿠키 (cookie) 와 세션 (Session)  (0) 2021.05.31
OSI 7계층  (0) 2021.05.29
TCP(전송 제어 프로토콜) / IP(인터넷 프로토콜)  (0) 2021.05.28
DNS (domain name system)  (0) 2020.04.13
SMTP (E-mail)  (0) 2020.04.12

안녕하세요. 

 

반갑습니다.

 

가끔 댓글이나, 메일을 주시는 분들 중 제가 블로그를 하는 이유를 잘못 인지하고 계신 분들이 계셔서 공지란을 따로

 

마련하였습니다.

 

<블로그를 하는 이유는 다음과 같습니다.>

 

가장 큰 개인적인 이유 입니다.

 

 1. 스스로의 복습을 위함 입니다.

    - 다른 내용을 공부하다 보면, 기존의 공부했던 내용들을 까먹기 마련입니다.

 

    - 그랬을 때, 구글링을 통해서 다른 분들이 작성해놓은 글을 보고 다시 학습하는 것과 제가 스스로 그림을 만들고 작 

       성했던 글을 보는 것 과는 개인적으로는 큰 차이가 있었습니다. (스스로 쓴 글은 다시 그 내용을 습득하는데 매우 

        빠르다고 생각합니다.)

 

    - 물론 저보다 많이 아시는 분들이 작성해놓은 글을 찾아보면 더 많고, 정확하고, 깊이 있는 내용을 학습할 수 있습니

      다

 

    - 그래서 저는 까먹은 내용을 다시 학습할 때는, 제가 쓴 글을 다시 읽어서 기본내용을 학습한 뒤, 구글링을 통해서 더

       깊은 내용에 접근하는 방식으로 활용합니다.

 

 

2. 공유를 위함 입니다.

     - 저도 컴퓨터 공학과 저학년 때 부터 모르는 내용을 구글링 할 때, 해결책을 얻는 경우도 있고, 이러한 문제가 발생

        할 수 있다는 사실이 확인이 됨으로써 그것만으로도 방향성을 결정할 수 있는 경우가 많이 있었습니다.

 

     - 그래서 블로그에 글을 보면 많이 모를 때, 배운 내용을 정리해놓은 글들도 많이 있습니다.

       지금 스스로 다시 봐도 코드가 참 허접하고 저건 왜 저렇게 작성했었을까? 라고 하는 경우도 있습니다. 

        하지만 그 내용을 수정하지는 않습니다. 왜냐면 구글링을 하시는 분들은 정말 잘 아시는 고수분들도 많이 계시겠

        지만, 저와 비슷한 아직은 학습중인 사람들도 많이 있으실 것이기 때문에 그 당시의 이슈와 문제점을 같은 눈높이

        에서 공유할 수 있기 때문입니다.

 

      - 저도 도움을 받은 만큼, 타인에게 도움을 줄 수 있는 부분이 있다면 저도 공유하고 싶습니다. 그리고 그 과정에서 

        저 또한 다시 학습하고 발전할 수 있다고 생각합니다.

 

 

3. 끝을 내며....

      - 가끔 코드에 관해, "코드가 더럽다", "왜 이런식으로 짰는지" 라고 하시는 분들이 있습니다.

 

      - 저도 제가 작성했던 글을 보면 가끔 그런생각이 듭니다. 그래도 수정하지는 않습니다.

        그 당시의 제가 최선을 다해 작성한 코드이기 때문입니다. 그래서 그 당시의 저와 같은 눈높이를 가지신 분들께는

        도움이 될 수 있다고 생각합니다.

 

      - 그러한 글들을 보며 제가 지금은 어떤 부분에서 좀 더 많이 알게되었고, 아직 부족한 부분들도 알 수 있습니다.

        내용이 부족하거나, 코드가 부족하다고 안좋게 보시는 분들은 이러한 점을 조금 감안하고 봐주신다면

        감사할 것 같습니다.

 

오늘도 행복한 하루 보내시길 바래요~!!!

 

1. 힙 메모리를 사용하는 이유?

 

- 위의 그림에서 보듯이 heap의 공간과 stack 의 공간에 나누어져 있습니다.

 

- 그리고 stack메모리의 경우 사용되는 양은 런타임시 결정이 되지만 스택메모리의 최대 공간 (사용가능한) 은 컴파일 시

  이미 지정이 됩니다.

 

- 왜 스택공간이 있는데 굳이 힙 메모리를 사용해야 하는가 ? 에 대한 궁금증이 떠오르게 됩니다.

 

- 제가 경험해보고 아는 선에서 몇가지만 이야기해보겠습니다.

 

-- (1) dynamic (동적할당)

     

         알고리즘 문제를 풀 때 처럼 입력의 최대값이 정해져 있는경우 그 최대치로 메모리 공간을 할당해서 컴파일 시간

         에 결정을 해서 스택메모리를 사용할 수도 있지만 (큰 사이즈의 경우 다음에 언급), 만약 사용자에 입력에 의해서 

         공간의 변동이 정해지는 경우 개발자 입장에서 미리 그 크기를 예측할 수 없으므로 런타임 시간에 변동에 맞게 

         메모리를 할당해야하는 경우 입니다.

 

-- (2) size 문제 (엄청 큰)

 

         이전 게시글에서 언급했다싶이 stack memory의 경우 최대 사이즈가 미리 정해지는 만큼 엄청 큰 사이즈가 필요

         할 경우 stack overflow가 발생할 수 있습니다. 이 때 스택에는 주소를 가리키는 포인터만 설정해주고, heap 메모

         리 공간에 큰 사이즈를 선언해서 가리키게끔 할 수 있습니다.

 

-- (3) 스택메모리의 life cycle

 

         스택 메모리의 경우 stack frame단위로 쌓이게 되는데 그 함수가 끝날경우 (life cycle)이 끝날 경우, 스택 메모리에

         서 해제됩니다. 이 경우에도 어떤 데이터를 유지하고 싶을 때는 힙 메모리 공간을 사용합니다. (직접 해제 해주기 

         전 까지 힙 영역에 저장하고 있는 데이터는 사라지지 않으므로)

 

 

 

 

2. 힙 메모리 사용 in C++

 

- stack 메모리 대신 heap 메모리를 사용하는 경우는 필요한 용량이 매우 크다던지, dynamic(동적)으로 런타임 시간에

   결정이 되는 변수를 사용한다던지 할 때인데요

 

- C++에서는 new를 통해서 힙에 공간을 할당 받고 스택 메모리에서의 포인터 변수가 이를 가리키도록 합니다.

 

- new를 통해서 할당을 받을경우 반드시 까먹지말고 delete을 해주어야만 메모리 leak을 막을 수 있습니다.

 

- new이외에도 unique_ptr 을 사용한다던지, 배열의 경우 vector를 사용하여 힙에 선언을 해준다면

 

- 메모리 해제 과정을 신경쓰지 않아도 되게끔 좀 더 안전하게 사용하실 수도 있습니다. 하지만 new를 사용하신다면

 

- 까먹지말고 반드시 delete으로 해제를 해주어야 한다는 점.!

 

 

 

 

3. stack 메모리 사용할 때와 heap 메모리 사용할 때의 차이점(장단점?)

 

- 우선 stack에 선언할 경우 속도가 더 빠릅니다.

 

- heap의 경우 원하는 만큼의 공간의 힙메모리상에서 찾고 할당하고 나중에는 이를 해제해야 하므로 상대적으로 시간이

 

- 많이 소요됩니다.

 

- 그럼에도 heap에는 큰 용량을 필요로 하는 변수라던지, 동적으로 결정이 되는 변수일 때 사용이 가능합니다.

 

- 그러므로 큰 사이즈가 아닌 경우 (100kb 미만? 정도?) 정도는 속도가 빠른 스택메모리를 사용하는 것이 좋습니다.

 

- 또 다른 차이점은 스택메모리의 경우 여러번수를 선언하고 주소를 찍어보시면 아시겠지만,

 

- 빽빽하게?? a가 4바이트를 차지하고, b가 4바이트를 차지한다면 메모리 주소도 4바이트(32bits) 차이가 납니다.

                   (물론 연속되게 위치하고 있을 경우를 가정)

 

- 중간에 빈 공간없이 빽빽하게 차지하지만, 힙의 경우 구멍이 송송뚤린 것 처럼 사이에 공간이 있습니다.

 

- 스택처럼 빡빡하게 메모리를 채우지는 않습니다.

** the network core ?

 - mesh of interconnected routers

 - "packet - switching" : hosts break application-layer messagers into packets

                                                 store-and-forward

                                                (entire packet must arrive at router before it can be transmitted on next link)

** end-end (source-destination) delay = 2L / R (propagation delay는 0이라고 가정한다면 ) 

     ex) L = 7.5Mbits , R = 1.5Mbps 라면 one-hop transmission delay = 5 sec

 

** queueing delay, loss

 - router에 들어오는 속도와 나가는 속도가 다르다면 (다수로 부터 나갈 수 있는 속도보다 빨리 들어온다면)

    queueing delay가 발생, 저장 가능한 양을 넘어간다면 loss가 발생 --- 설정은 어떻게 해놓느냐에 따라 다르다.

 

** Two key network - core functions

 - routing(최단거리를 계산 - > forwarding table을 업데이트 ) 과 forwarding

 - router 장비가 비싼이유? --> 하는 일은 routing과 forwading 이지만 초당 많은일 (10만, 100만,....) 등에 따라 매우 비쌈

 

** circuit switching vs packet switching

 -  circuit switching (회선을 독점하여 쓰고 싶을 떄 좋다. ) - nosharing (시간, 또는 회선 대역을 나누어 쓰는 TDM,FDM은 존재)

 -  parcket switching (많은 사람이 쓸 수 있지만 너무 많이 몰리면 속도를 보장받지 못할 수 있다.)

 -  안정적인 service를 원할 때는 circuit-switching이 좋을 수도 있다.

 

'학부생 공부 > 네트워크' 카테고리의 다른 글

Web and HTTP  (0) 2020.04.06
TCP, UDP  (0) 2020.04.06
Application Layer  (0) 2020.04.04
Internet structure  (0) 2020.03.26
인터넷(Internet) 이란 ?  (0) 2020.03.22

+ Recent posts