본문 바로가기

전체 글78

[Network] Transport Layer - Principle of Reliable Data Transfer reliable data transfer 는 unreliable channel 위에서 구현되었기 때문에 복잡하고 어렵다. 그 예로, TCP 는 unreliable 한 IP 위에 구현된 reliable data transfer protocol 이다. rdt3.0 : Stop-and-Wait Protocol rdt3.0 은 stop-and-wait protocol 로 packet 을 보내고 멈춘 후 ackowledgment 를 기다리는 동작을 한다. sender 와 receiver 는 다음과 같은 대원칙을 따른다. sender는 pkt 를 보내면서 timer 를 작동한다. 보낸 pkt 에 해당하는 ack 을 받으면 다음 pkt 을 보낸다. 만약 timeout 이 발생하면 이전에 보낸 pkt 를 다시 재전송한.. 2023. 1. 6.
[Network] Transport Layer - Connectionless Transport: UDP UDP 는 application process 의 message 를 가져와 몇 가지 filed 를 붙여 만든 segements 를 network layer 로 보낸다. network layer 는 segement 를 IP datagram 으로 캡슐화해 best-effort 시도를 한다. segment 가 host 에 도착하면 port number 를 사용해 올바른 process 로 data 를 전달한다. UDP 는 segment 전송 전에 sender 와 receiver 사이에 handshaking 이 없어, conntectionless 하다고 한다. UDP 를 사용하는 대표적인 application-layer protocol 로 DNS 가 있다. DNS application 이 DNS query mes.. 2022. 12. 8.
[Spring Security] JWT + OAuth2.0 적용해보기 - (1) spring security 학습과 Spring boot 에 JWT, OAuth2.0 적용을 위해 간단한 프로젝트를 진행해 보았습니다. 이번 프로젝트로 filter 기반의 Spring Security 아키텍처를 이해하고, JWT 와 OAuth2.0 의 이해 및 적용을 목표로 하였습니다. JWT 기반 인증 이번 프로젝트는 access token 과 refresh token 을 모두 사용하는 방법을 채택했습니다. access token 과 refresh token 을 사용한 flow 는 다음과 같습니다. AT : Access Token. 만료기간 짧음, RT : Refresh Token. 만료기간 김 case 0 ) login /login 로그인 성공 시, 200 - memberId, AT1, RT1 res.. 2022. 12. 1.
[Network] Transport Layer - Service and Multiplexing & Demultiplexing Transport-Layer Service transport-layer protocol 은 다른 host 들에서 실행되는 application processes 사이에 logical communication 을 제공한다. host 들은 실제로 많은 routers 와 data links 로 연결되어있지만, logical communication 에 의해 host 들이 직접적으로 연결된 것 처럼 보인다. transport-layer protocol 은 network routers 가 아닌 end systems 에서 구현된다. sending side 에서는 transport layer 가 application message 를 segment 라는 단위로 쪼개서 end system 의 network layer .. 2022. 11. 30.
[Network] Application Layer - Socket Programming Socket 일반적인 network application 은 client prorgram 과 server program 의 쌍으로 구성된다. client program 과 server program 이 실행되면, client process 와 server process 가 생성되고 process 간 communication 을 위해 socket 을 사용한다. socket 은 application layer 와 transport layer 사이에 존재한다. 프로그래머는 TCP/UDP 헤더를 어떻게 만들어야 하는지, 구조가 어떻게 되는지 등의 고민 없이 socket API 를 사용하여 network application 을 만들 수 있다. Socket Programming with UDP 다음은 UDP 의 .. 2022. 11. 28.
[Network] Application Layer - DNS Internet host 는 hostname 을 사용하여 host 를 식별한다. hostname 의 예로 'www.google.com', 'www.naver.com' 등이 있다. hostname 은 가변 길이의 알파벳으로 이루어진 인간이 사용하는 표현이므로 router 가 처리하기에는 어려움이 있어 IP address 를 사용하여 host 를 식별할 수 있다. IP address 는 32bit 고정 길이의 주소로 엄격한 계층 구조를 가진다. Services Provided by DNS 우리는 인간이 사용하는 hostname 을 router 가 사용할 수 있게 IP address 로 바꾸어 주는 service 가 필요하고, 이러한 일을 하는 system 을 Domain Name System(DNS) 라고 .. 2022. 11. 23.
[Network] Application Layer - Electronic Mail Electronic mail 에는 세가지 주요 구성요소가 있다 : user agents, mail servers and Simple Mail Transfer Protocol(SMTP). User Agent 는 mail reader 라고도 부르며, user 가 mail message 를 쓰고, 읽고 보내는 등의 역할을 할 수 있게 한다. mail server 로 mail 을 보내거나 mail server 에서 mail 을 가져올 수 있다. user agent 의 종류로 Microsoft Outlook 과 Apple Mail 등이 있다. Mail Server 는 e-mail infrastructure 의 core이다. mail server 에는 mail box 와 message queue 가 있다. mail.. 2022. 11. 21.
[Network] Application Layer - Web and HTTP Web page 는 HTML file, JPEG image, Java applet 같은 objects 로 구성되어 있다. 대부분의 web page 는 몇몇 referenced objects 를 포함하는 base HTML file 로 이루어져 있다. objects 는 URL 에 의해 다루어진다. URL 의 예로 'https://www.someschool.edu/someDept/pic.gif:80' 를 볼 수 있다. 'https://' 는 프로토콜(ex. ftp://, telnet:// ...), 'www.someschool.edu'는 hostname, '/someDept/pic.gif' 는 path name, 80 은 port number 를 뜻한다. HTTP HTTP(Hypertext Transfer P.. 2022. 11. 15.
[Network] Application Layer - Principle of Network Applications networkd application 을 개발을 위해서는 network 를 통해 서로 의사소통하고 서로 다른 end system 에서 작동하는 프로그램을 만들어야 한다. network 의 layering 으로 인해 우리는 network core device 를 작동시키는 소프트웨어를 만들 필요가 없고, network core device 는 user application 을 사용할 수 없다. Network Application Architecture application architecture 에는 Client-Server architecture 와 P2P architecture 가 있다. Client-Server architecture 는 다음과 같은 특징들을 가진다. server 는 always-on.. 2022. 11. 8.