Computer Science/Network
-
네트워크 핵심 요약Computer Science/Network 2022. 1. 19. 16:37
네트워크 핵심 요약 [OSI 7계층] ∙OSI 7계층 ➀물리(Physical): 데이터를 전기적 신호 주고받는 계층 ➁데이터링크(Data Link): MAC 주소, 스위치, 물리 정보 송수신 ➂네트워크(Network): IP 주소, 라우터, 패킷을 송수신 ➃전송(Transport): TCP(신뢰성, 연결지향적), UDP(비신뢰성, 실시간) ➄세션(Session): 프로그램 간의 통신 ➅표현(Presentation): 애플리케이션이 다루는 정보를 통신에 맞는 형태 전환 ➆응용(Application): 일반적인 응용 서비스 수행을 담당하는 계층 [TCP 연결/해제] ∙TCP 3 way handshake(TCP 연결) ➀클라이언트가 서버에게 SYN 패킷을 보낸다(sequence: x) ➁서버가 SYN을 받았다..
-
8.Blocking I/O, Non-Blocking I/OComputer Science/Network 2021. 9. 9. 16:22
∙Blocking I/O ∘Process(Thread)가 Kernel에게 I/O를 요청하는 함수를 호출하여 Kernel이 작업을 완료하면 결과를 반환 받음 -I/O 작업이 진행되는 동안 user process(thread)는 자신의 작업을 중단한 채 대기한다. -Resource 낭비가 심하다. -여러 클라이언트가 접속하는 경우 클라이언트별로 thread를 생성해서 context switching이 증가한다. ∙Non-Blocking I/O ∘I/O 작업이 진행되는 동안 user process의 작업을 중단하지 않음 ➀user process가 recvfrom 함수를 호출하여 커널에게 해당 socket의 data를 요청 ➁커널은 곧바로 recvBuffer을 채우지는 못하고 EWOULDBLOCK을 return..
-
7.로드 밸런싱(Load Balancing)Computer Science/Network 2021. 9. 8. 23:50
∙로드 밸런싱 ∘둘 이상의 CPU 또는 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 기법 -Load Balancer를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜준다. ➀Round Robin: 우선순위를 두지 않고, 순서대로 시간단위로 할당하는 방법 ➁Least Connections: 연결 개수가 가장 적은 서버를 선택하는 방법 ➂Source: 사용자 IP를 해싱하여 특정 사용자가 항상 같은 서버로 연결되도록 분배하는 방법 -Load Balancer에 문제가 생길 수 있기 때문에 이중화하여 대비한다 (Active 상태와 Passive 상태). 출처 링크
-
6.HTTP(HyperText Transfer Protocol), HTTPS(HyperText Transfer Protocol Secure)Computer Science/Network 2021. 9. 7. 15:22
∙HTTP ∘인터넷 상에서 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약 -TCP->HTTP -HTTP는 텍스트 교환이므로 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재 ∙HTTPS ∘인터넷 상에서 클라이언트와 서버가 자원을 주고받을 때 정보를 암호화하는 SSL 프로토콜을 사용하는 통신 규약 -TCP->SSL->HTTP -HTTPS는 텍스트를 공개키 암호화 방식으로 암호화한다. ➀애플리케이션 서버를 만드는 기업 A는 HTTPS를 적용하기 위해 공개키와 개인키를 만든다. ➁신뢰할 수 있는 CA 기업에게 내 공개키 관리를 계약한다. ➂CA기업은 A의 이름, 공개키, 암호화 방법을 담은 인증서를 만들고 CA 기업 개인키로 암호화해서 준다. ➃A서버는 공개키로 암호화된 HTTPS..
-
5.대칭키(Symmertric Key), 공개키(Public Key)Computer Science/Network 2021. 9. 6. 16:36
∙대칭키 ∘암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘 -동일한 키를 주고받기 때문에 매우 빠르다 -대칭키 전달과정에서 해킹 위험이 있다. ∙공개키 ∘암호화와 복호화에 사용하는 암호키를 분리한 알고리즘 -자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화 할 수 있는 암호키(공개키)를 공개한다. ➀A가 웹 상에 공개된 B의 공개키를 이용해 평문을 암호화하여 B에게 보냄 ➁B는 자신의 비밀키로 복호화한 평문을 확인, A의 공개키로 응답을 암호화하여 A에게 보냄 ➂A는 자신의 비밀키로 암호화된 응답문을 복호화함 -대칭키의 단점을 해결했지만, 암호화하는 키와 복호화하는 키가 서로 다르기 때문에 매우 복잡하다. ∙대칭키와 공개키 혼합 ∘대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에..
-
4.UDP(User Datagram Protocal)Computer Science/Network 2021. 9. 4. 17:42
∙UDP 통신 ∘신뢰성을 보장해주지는 않지만, TCP보다 데이터 처리가 빠르다. -신뢰성을 보장하지 않아도 돼서 일방적으로 데이터를 발신하는 비연결성 특징을 가진다. -패킷의 용량이 더 적어 송신 속도가 빠르다. -실시간 방송과 온라인 게임에서 주로 사용된다. ∙DNS(Domain Name Service) ∘사람이 기억하기 쉽게 문자로 만들어진 도메인을 컴퓨터가 처리할 수 있는 IP로 바꾸는 서비스 -DNS request는 UDP segment에 들어갈 정도로 작다. -DNS는 53번 port에서 UDP를 사용한다. -DNS 서버 간의 요청을 주고받을 때 사용하는 zone transfer에서는 TCP를 사용한다. -데이터가 512 bytes를 넘거나, 응답을 못 받는 경우 TCP를 사용한다. 출처 링크
-
3.TCP/IP, 흐름제어(Flow Control), 혼잡제어(Congestion Control)Computer Science/Network 2021. 9. 3. 23:31
∙TCP 통신 ∘신뢰성을 보장하는 통신 프로토콜 -서버:socket() -> bind() -> listen() -> accept() -> read/writhe() -> close() (소켓생성) (소켓주소할당) (연결요청대기) (연결허용) (데이터송수신) (연결종료) -클라이언트:socket() -> connect() -> read/write() -> close() (소켓생성) (연결요청) (데이터송수신) (연결종료) ➀LINK 계층: 물리적인 영역의 표준화 ➁IP 계층: 경로를 검색 ➂TCP/UDP 계층: 데이터의 실제 송수신을 담당 ➃애플리케이션 계층: 응용 서비스 수행 ∙흐름제어 ∘수신측의 저장 용량 초과로 발생하는 데이터 손실을 줄이기 위해 송신 데이터 전송량을 조절하는 기법 ○Stop and W..
-
2.TCP 3 way handshake, 4 way handshakeComputer Science/Network 2021. 9. 2. 17:59
∙TCP 3 way handshake ∘정확한 전송을 보장하는 TCP 통신을 위해 연결하는 과정 ➀클라이언트가 서버에게 SYN 패킷을 보낸다. -sequence: x ➁서버가 SYN을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보낸다. -sequency = y -ACK: x+1 ➂클라이언트가 서버의 ACK, SYN 패킷을 받고, ACK 패킷을 서버로 보낸다. -ACK: y+1 ∙4 way handshake ∘TCP 통신의 연결을 해제하는 과정 ➀클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다. ➁서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. -모든 데이터를 보내기 위해 TIME OUT 상태가 된다. ➂서버는 데이터를 모두 보내고 연결이 종료되었다는 FIN..