본문 바로가기

Computer-Sience38

[Network] UDP 1. UDP(User Datagram Protocol) : 인터넷 프로토콜 스위트(IP) 내에서 데이터를 패킷으로 분할하여 전송하기 위해 사용되는 프로토콜이다. UDP는 주로 TCP(Transmission Control Protocol)와 함께 비교된다. 둘 다 인터넷 통신에 많이 사용되지만 서로의 특징과 용도가 다르고, UDP는 특히 속도와 간결성을 추구하는 프로토콜이라고 볼 수 있다. UDP는 TCP와 달리 연결 지향적인 프로토콜이 아니기 때문에, 데이터를 전송하기 전에 연결을 설정하지 않고, 패킷이 도착했는지 여부를 확인하지 않는다. 아래는 UDP가 가지는 특징이다. 높은 전송 속도 : TCP는 패킷을 보낼 때마다 확인응답 과정이 있어, 일정한 지연이 발생할 수 있으나. UDP는 이런 과정을 생략하.. 2023. 7. 31.
[Network] TCP : 3-Way Handshaking / 4-Way Handshaking TCP에서 Client와 Server의 통신을 하기 전에 논리접인 접속을 성사시키기 위해 3-Way Handshaking이라는 방식을 이용하여 상호 통신을 위한 연결을 성사시킨다. 3-Way Handshaking는 클라이언트와 서버 간의 통신을 하기 위한 과정이라고 한다면, 통신을 종료하기 위한 과정 또한 존재하는데, 이를 4-Way Handshaking이라고 한다. 해당 내용을 순서대로 알아볼 것이다. 3-Way Handshaking은 아래의 세 개의 단계로 진행된다. 1. 클라이언트 => 서버 : 연결 요청 (SYN) 클라이언트는 서버에 연결을 요청하기 위해 SYN 패킷을 전송한다. SYN(Synchronize Sequence Numbers)은 클라이언트가 서버와의 연결을 시작하고자 한다는 의미를 가.. 2023. 7. 26.
[Network] TCP/IP 1. TCP/IP의 정의 및 역할 TCP : Transmission Control Protocol TCP는 인터넷 프로토콜 스위트(IP) 내에서 데이터를 신뢰성 있게 전송하기 위해 사용되는 연결 지향적인 프로토콜이다. 3-way Handshaking을 통하여 송신자와 수신자의 상호 연결 설정을 통해 통신을 시작하며, 해당 연결을 이용하여 데이터를 주고 받는다. TCP는 아래와 같은 특징을 가지고 있다. IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜 전이중(Full Duplex) 방식의 양방향 가상 회선을 제공 패킷의 순서와 확인 번호를 기반으로 신뢰성 있는 데이터 전송을 보장 (손실 시 재요청) OSI 7 계층의 4 계층(전송 계층)에서 속함 IP : Internet Protocol I.. 2023. 7. 24.
[OS] 메모리 구조 운영 체제의 프로그램이 실행되려면 실행되려는 프로그램(코드)이 메모리에 먼저 적재되고, 추가로 프로그램에서 사용할 변수를 할당할 메모리 또한 필요로 한다. 위의 그림을 토대로 운영체제에서 프로그램(한 개 이상의 프로세스로 이루어진 집합체)에 배정하는 메모리 영역은 4가지 영역으로 구분되어 있다. Code 영역 Data 영역 Heap 영역 Stack 영역 Code -> Data -> Heap -> Stack 순으로 Low Memory -> High Memory로 분류된다. Low Memory : logical address가 존재하는 메모리 공간 High Memory : logical address를 갖고 있지 않는 메모리 공간 1. Code 영역 : 메모리에 배정된 Code 영역은 이름 그대로 프로그램의.. 2023. 7. 13.
[Network] 도메인 주소 입력 시 데이터 요청 과정 일반적으로 인터넷을 이용할 때, 간편하게 도메인 주소를 이용하여 접속을 하지만, 그 과정에 대하여 잘 알지 못하고 당연하게 이용하였기에 자세히 알아보자는 취지에서 주제를 정하고 조사하게 되었다. 브라우저에 도메인 주소(ex : www.youtube.com)를 입력했을 때 데이터를 요청하고 받아오는데 일어나는 과정은 크게 5가지의 단계로 나누어서 볼 수 있다. 1. 입력한 URL을 기반으로 DNS 검색 (캐싱 조회) 브라우저는 입력한 URL을 DNS 서버에 요청하기 전에 브라우저에 캐싱된 DNS에 일치하는 IP가 있는지 조회를 하고, 존재한다면 그것을 이용하고, 존재하지 않는다면 DNS 서버에 요청을 하게 된다. 2. 인접한 DNS 서버에 DNS query 전달 (DNS 서버 요청 - 반복) ISP(In.. 2023. 6. 25.
[CS] Iterator / Generator 1. Iterator (반복자) 프로그래밍에서는 다양한 타입의 객체가 존재한다. 문자를 나타내는 char, 문자열을 나타내는 string와 정수를 나타내는 integer와 같은 타입과 Array나 List와 같은 다양한 형식을 객체는 가질 수 있는데, 그중에서 Array와 List 같이 각각의 원소를 순회할 수 있는 객체를 Iterable 하다고 칭한다. 이러한 점에서 유추할 수 있는 것처럼 Iterator 또한 크게 다르지 않다. 다음은 Python에서 반복자의 예시이다. Example : # 예제 리스트 a = [1,2,3,4,5] # 예제 리스트의 Iterator 객체 iter_a = iter(a) # 첫 번째 원소 print(next(iter_a)) # 두 번째 원소 print(next(iter_.. 2023. 5. 4.