CS(137)
-
3 & 4 Way Handshake
TCP는 신뢰적이고 연결지향성 서비스를 애플리케이션에게 제공한다.이를 구현하는 핵심적인 개념이 Handshaking이다.3 - Way Handshake TCP의 접속 과정으로 호스트의 프로세스를 클라이언트 프로세스(Client Process) 그리고 접속하려는 주체를 서버 프로세스(Server Process)라 할때 두 프로세스에 데이터를 전송하기 전에 먼저 정확한 전송을 보장하는 과정이다. 이때 사용하는 통신방법은 PAR(Positive Acknowledgement with Re-transmission)이다.즉,ACK를 받을 때까지 데이터 유닛을 재전송한다.3 -Way Handshaking의 작동과정은 3단계로 나뉜다.1.클라이언트는 서버와 연결하기 위해 SYN을 보낸다. 송신자가 최초로 데이터를 전송..
2024.09.20 -
TCP/IP
TCP/IP TCP/IP는 인터넷 환경에서 정보 전송을 위해 쓰이는 프로토콜.즉,통신규약이다.TCP는 데이터의 추적/제어 IP는 데이터의 주소 지정/전달을 담당함.전이중(Full-Duplex), 점대점(Point to Point) 방식으로 작동된다. TCP(Transmission Control Protocol) OSI 네트워크 계층 모델 중 전송 계층에서 사용하는 프로토콜로 가상회선 방식으로 패킷을 교환한다.장치들 사이에 연결과 데이터의 전송/제어 기능을 통해서, 데이터 전송의 신뢰성을 보장한다.체크섬 필드에서는 패킷 손실의 문제를 보장해주고,전이중/양방향에서 데이터 전송이 가능하다.재전송/시간 제한 기법,순서 번호(Sequence number)와 확인번호(ACK)를 사용하여 패킷의 흐름/혼잡/순서 등..
2024.09.10 -
삽입 정렬,합병정렬
삽입정렬 삽입 정렬은 이미 정렬된 수열에 대해서 새로운 원소를 삽입하는 정렬이다.즉,두 번째 인덱스부터 시작해서 다음 인덱스로 이동하고 해당 인덱스와 비교하면서 옳바른 자리에 삽입한다.이를 그림으로 나타내면 다음과 같다.그리고 이를 의사 코드로 나타내면 다음과 같다. 시간 복잡도는 $O(n^{2})$이다.이는 삽입된 원소가 역순일 경우로 최선의 경우에서는 O(n)이 된다.합병정렬이 정렬은 이미 공부했기에 링크만 올려둔다.https://kshdevstory.tistory.com/119
2024.09.09 -
프로세스 간의 통신
프로세스들은 실행 과정에서 서로 간에 데이터를 주고받을 필요가 있다.이는 클라이언트 프로세스,서버 프로세스 간에 일어나는 일이 대표적이며 병행하여 실행하는 프로세스들 간에 데이터 교환도 해당된다.이를 프로세스 간의 통신(IPC: Inter-Process Communication)이라 한다.프로세스 간의 통신을 구현하는 방법은 공유 메모리 방식(Shared memory),메시지 전달 방식(Message passing) 방식이 있다.위의 예시는 로컬 컴퓨터에서의 두 프로세스간의 통신이고 흔히 인터넷에서 일어나는 소켓 통신은 다음과 같다.공유 메모리 공유 메모리 방식은 송신측과 수신측이 일정한 메모리 영역을 공유하고,송신측이 여기에 전송하고자 하는 내용을 기록하면 수신측은 여기서 내용을 읽어 간다.여기서 공유..
2024.06.07 -
데드락 문제 및 그 해법
데드락(DeadLock)은 전혀 풀릴 가능성이 없는 잠김 상태로서 컴퓨터에서는 이 집합의 모든 프로세스가 대기상태이고 이들이 기다리는 이벤트는 이 집합 속의 다른 프로세스에 의해서 발생해야 하는 경우로 정의된다.다익스트라는 이러한 현상을 식사중인 철학자 문제로 비유해서 설명했다.식사중인 철학자(Dining philosopher) 5명의 철학자들이 원탁에 둘러 앉아서 배가 고프면 스파게티를 먹고 배가 부르면 생각에 잠기는 작업을 반복할때 스파게티를 먹기 위해서는 젓가락 두 개가 필요한데.젓가락은 철학자 사이마다 한 개씩 놓여있다.따라서 스파게티를 먹기 위해서는 다른 철학자의 젓가락을 필수적으로 공유해야한다.이때 데드락은 흔히 일어나지 않고 다음과 같은 상황에서 일어난다.어느날 모든 철학자가 동시에 스파게..
2024.06.02 -
프로세스간의 동기화
프로세스들 간에는 공유하고 있는 데이터에 대하여 그 내용을 변경하는 작업이 수시로 이루어진다.이 과정에서 데이터가 예상 밖의 내용으로 변경되어 있는 경우가 존재한다.이러한 경우를 공유 데이터의 일관성(Consistency)이 유지되지 못했다 하고 이러한 일관성을 유지하기 위해 동기화(Synchronization)이 필요하다.이는 시스템의 공유 메모리뿐만 아니라 프로세스들간에 공유되는 모든 자원에서 발생이 가능한 문제이다.우선 이러한 코드를 가정해보자insertItem(item){ item->next = listHead; listHead = item;}이때 첫번째줄을 실행하고 문맥교환이 이루어져서 똑같이 insertItem을 실행한다하면 다음과 같다. 따라서 적절한 동기화 처리가 필요하다.일반적..
2024.05.26