Verkkosovelluskehitys-opintojakso – TCP-protokolla – WebSocket



Verkkosovelluskehitys-opintojakso – TCP-protokolla – WebSocket

0 0


Piilorasva.github.io


On Github Piilorasva / Piilorasva.github.io

Verkkosovelluskehitys-opintojakso

Tälle sivulle kerätään kurssin aikana tulleita aiheita

Kolme mielestäni tärkeää protokollaa

  • TCP
  • WebSocket
  • HTTP

TCP-protokolla

Transmission control protocol

  • TCP tarjoaa luotettavan, järjestetyn ja virhetarkistetut datan liikuttamisen järjestelmien välillä
  • Järjestyksen ja pakettien uudelleen lähettämisen mahdollistamiseksi TCP:hen on kehitetty vuonvalvonta- ja ruuhkanhallintamekanismeja

Yhteyden vaiheet

  • Muodostamisessa käytetään kolmitiekättelyä. Tässä kättelyssä client lähettää ensin SYN-paketin. SYN-paketin saatuaan vastaanottanut laite vastaa lähettäjälle SYN/ACK-paketilla kohdelaitteelle.
  • Tiedonsiirrossa ja sen aikana käytetään erinäisiä mekanismeja luotettavuuden parantamiseksi. Näihin lukeutuu ainakin sekvenssinumerointi, tarkistussummat, ajastimet ja tunnistimet.
  • Yhteys päätetään joko nelitiekättelyllä tai kolmitiekättelyllä. Nelitiekättelyssä molemmat osapuolet lähettävät FIN-paketin ja tähän vastataan ACK-paketilla. Kolmitiekättelyssä vain toinen osapuoli lähettää FIN-paketin ja tähän vastataan FIN/ACK-paketilla.

TCP:n laajuus

  • TCP-yhteyttä käytetään pohjana ainakin seuraavissa protokollissa:
    • HTTP
    • Telnet
    • SSH
    • FTP
    • WebSocket
  • TCP toimii näissä protokollissa yleensä tiedonsiirtorajapintana

WebSocket

  • WebSocket protokolla tarjoaa 2-suuntaisen yhteyden yhden TCP-yhteyden ylitse.
  • TCP:n käyttö vähentää huomattavasti verkkoliikenteen tarvetta ja viivettä.
  • Tämä saavutetaan sillä, että yhteys pidetään jatkuvasti avoimena ja tarvitaan vain yksi TCP-yhteys, kun taas esim. HTTP:ssä tarvitaan jatkuvia päivittyviä kyselyitä ja yksi avoin yhteys molempiin suuntiin

WebSocketin edut

  • Vähemmän kuormaa servereille
  • Automaattimen proxyn läpi yhdistäminen
  • WebSocket-yhteys alkaa aina HTTP-yhteytenä --> yhteensopiva vanhempien järjestelmien kanssa

Yhdistys

  • Yhdistettäessä client lähettää pyynnön vaihtaa protokolla WebSocketiksi
  • Onnistuneen kättelyn jälkeen HTTP-yhteys hajotetaan, ja tilalle tulee WebSocket-yhteys saman TCP/IP-yhteyden päälle.

HTTP

Hypertext Transfer Protocol

  • Protokolla jota selaimet ja palvelimet käyttävät keskinäiseen tiedonsiirtoon

Normaalikäytäntö

  • Ensin otetaan yhteyttä esimerkiksi selaimella palvelimeen TCP:n yli ja lähetetään pyyntö.
  • Serveri vastaa pyyntöön lähettämällä jotain takaisin
  • Http-yhteys on perusominaisuudeltaan ns. "tilaton", eli se ei tallenna käyttäjän istuntoa tai tietoja millään tavalla
  • Tietojen tallentamisessa käytetäänkin evästeitä(cookies)

1) Sovelluksen luonti OpenShiftiin

Sovelluksen luonti onnistui kirjoittamalla seuraavanlainen komento komentokehotteeseen windowsissa:

rhc app create irclokki nodejs-0.10 --from-code  https://github.com/jvanhalen/irclokki.git

2) Lisää mysql-cartridge OpenShift-sovellukseen

Mysql-lisäosan lisääminen sovellukseen taas onnistui seuraavanlaisella komennolla:

rhc cartridge add mysql-5.5 -a irclokki

Toinen vaihtoehto mitä myös kokeilin on se, että mysql-moduuli lisätään openshiftin nettisivuilla graafisen käyttöliittymän kautta.

3) Editoi tietokanta kuntoon

Tietokantaa editoidakseni minun täytyi käyttää puttya, koska windowsin komentokehotteella ssh-yhdistyksessä oli ongelmaa. Puttyn käyttöön hyvät ohjeet löytyivät täältä: https://developers.openshift.com/en/managing-remote-connection.html#download-the-putty-installer

Puttylla yhdistämistä varten tarvittiin sovelluksen ssh-osoite. Osoitteen sai selville kirjoittamalla komentokehoitteeseen rhc app-show irclokki. Puttylla yhdistämisen jälkeen ajoin seuraavat komennot:

mysql 
DROP DATABASE if exists irclog;
CREATE DATABASE irclog;
USE irclog;
CREATE TABLE log (id INT PRIMARY KEY AUTO_INCREMENT, timestamp BIGINT, message TEXT); 

Seuraavaksi starttaa sovellus omalta koneelta

rhc app-restart irclokki

Omia tuntemuksia tehtävästä

Tehtävä ei ollut varsinaisesti vaikea. Pitkään kuitenkin pähkäilin, miksi oma bottini ei kanavalla näkynyt. Tämä kuitenkin taisi olla enemmän irc:n puolella oleva vika ja yhtäkkiä botti rupesikin pelittämään.

Verkkosovelluskehitys-opintojakso Tälle sivulle kerätään kurssin aikana tulleita aiheita